SpringBoot整合ActiveMQ

1. 引入依赖

<dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-activemq</artifactId>

</dependency>

2. springboot配置文件:

spring:
  activemq:
    broker-url: failover:(nio://127.0.0.1:61616)
    user: admin
    password: admin
    in-memory: false #是否启用内存模式(就是不安装MQ,项目启动时同时启动一个MQ实例)
    packages:
      trust-all: true #信任所有的包
    pool:
      enabled: false
    producerTopic: ledTopic # 生产者会话topic
    consumerTopic: ledTopic # 消费者会话topic

3. ActiveMQ配置文件:

@Configuration
@EnableJms 
@SuppressWarnings("all")
public class ActiveMQConfig
{
    @Value("${spring.activemq.producerTopic}")
    private String producerTopic;
    @Bean
    public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory)
    {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPubSubDomain(true);
        return factory;
    }
    @Bean
    public Topic topic()
    {
        return new ActiveMQTopic(producerTopic);
    }
}

4. 创建生产者

@Slf4j
@Component
public class ActiveMQProducer
{
    @Autowired
    private JmsMessagingTemplate jmsTemplate;
    
    @Autowired
    private Topic topic;
    
    public void sendTopicMsg(String msg)
    {
        log.info("发送消息:" + msg);
        jmsTemplate.convertAndSend(topic, msg);
    }
}

5. 创建消费者

@Slf4j
@Component
public class ActiveMQConsumer
{
    // 接收topic类型消息
    // containerFactory对应配置类中注册JmsListenerContainerFactory的bean名称
    @JmsListener(destination = "${spring.activemq.consumerTopic}", containerFactory = "jmsTopicListenerContainerFactory")
    public void ListenTopic(String msg)
    {
        log.info("收到消息:" + msg);
    }
}

 

 

posted @ 2020-06-03 23:46  自挂东南只  阅读(46)  评论(0)    收藏  举报