ActiveMQ与SpringBoot的整合

ActiveMQ

配置类

@Configuration
@EnableJms
public class ActiveMQConfig {
    
    
/**
 *   定义存放消息的队列
 *   @return
 */

    @Bean
    public Queue queue (){
    
    
        return new ActiveMQQueue("springboot.queue");
    }
/**
 * springboot默认只配置queue类型消息,如果使用topic类型的消息,则需要配置该bean
 */

    @Bean
    public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory){
    
    
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        //这里必须设置为true, false则表示queue类型
        factory.setPubSubDomain(true);
        return factory;
    }

    @Bean
    public Topic topic (){
    
    
        return new ActiveMQTopic("springboot.topic");
    }

}

生产者

@RestController
public class Producer {
    
    
    @Autowired
    private JmsMessagingTemplate jmsTemplete;

    @Autowired
    private Queue queue;

    @Autowired
    private Topic topic;

   
/**
 * 发送queue类型消息
 */

    @GetMapping("/queue")
    public void sendQueueMsg (String msg){
    
    
        jmsTemplete.convertAndSend(queue, msg);
    }

/**
 *发送topic类型消息
 */

    @GetMapping("/topic")
    public void sendTopicMsg (String msg){
    
    
        jmsTemplete.convertAndSend(topic, msg);
    }
}

消费者

@Component
public class Consumer {
    
    

/**
 * 接受queue类型消息
 * destination对应配置类中ActiveMQQueue("springboot.quque")设置的名字
 */

    @JmsListener(destination = "springboot.queue")
    public void ListenQueue (String msg){
    
    
        System.out.println("接收到queue消息:"+msg);
    }

  
/**
 * 接收topic类型消息
 * destination对应配置类中ActiveMQTopic("springboot.topic")设置的名字
 * containerFactory对应配置类中注册JmsListenerContainerFactory的bean名称
 */

    @JmsListener(destination = "springboot.topic", containerFactory = "jmsTopicListenerContainerFactory")
    public void ListenTopic (String msg){
    
    
        System.out.println("接收到topic消息:"+msg);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38530648/article/details/108872611