SpringBoot整合ActiveMQ

一、maven依赖包
用到的springboot版本为2.0.1

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>5.15.0</version>
        </dependency>

二、配置文件

spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: admin
    password: admin
    pool:
      enabled: true
      max-connections: 10

queueName: springboot-queue
topicName: springboot-topic

三、activeMQ配置类

@Configuration
public class ActivemqConfig {

    @Value("${queueName}")
    private String queueName;

    @Value("${topicName}")
    private String topicName;

    @Bean
    public Queue queue() {
        return new ActiveMQQueue(queueName);
    }

    @Bean
    public Topic topic() {
        return new ActiveMQTopic(topicName);
    }

    /**
     * queue监听容器
     */
    @Bean
    public JmsListenerContainerFactory<?> queueJmsListenerContainer(ConnectionFactory activeMQConnectionFactory) {
        DefaultJmsListenerContainerFactory queueListenerContainer = new DefaultJmsListenerContainerFactory();
        queueListenerContainer.setConnectionFactory(activeMQConnectionFactory);
        return queueListenerContainer;
    }

    /**
     * topic监听容器
     */
    @Bean
    public JmsListenerContainerFactory<?> topicJmsListenerContainer(ConnectionFactory activeMQConnectionFactory) {
        DefaultJmsListenerContainerFactory topicListenerContainer = new DefaultJmsListenerContainerFactory();
        //设置成发布订阅模式
        topicListenerContainer.setPubSubDomain(true);
        topicListenerContainer.setConnectionFactory(activeMQConnectionFactory);
        return topicListenerContainer;
    }
}

四、生产者
测试代码:

@Service
public class ActivemqProducer {

    @Autowired
    private Queue queue;

    @Autowired
    private Topic topic;

    //JmsMessagingTemplate对JmsTemplate进行了封装
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    public void sendQueue() {
        for (int i = 0; i < 5; i++) {
            String msg = "queue message" + i;
            System.out.println("发送了queue消息" + i);
            jmsMessagingTemplate.convertAndSend(queue, msg);
        }
    }

    public void sendTopic() {
        for (int i = 0; i < 5; i++) {
            String msg = "topic message" + i;
            jmsMessagingTemplate.convertAndSend(topic, msg);
            System.out.println("发送了topic消息" + i);
        }
    }
}

五、消费者
测试代码:

@Service
public class ActivemqConsumer {

    @JmsListener(destination = "${queueName}", containerFactory = "queueJmsListenerContainer")
    public void receiveQueue(String message) {
        System.out.println("QueueListener: 收到信息: " + message);
    }

    @JmsListener(destination = "${topicName}", containerFactory = "topicJmsListenerContainer")
    public void receiveTopic(String message) {
        System.out.println("TopicListener: 收到信息: " + message);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值