SpringBoot整合ActiveMQ

 队列方式

1. 导入依赖   

       <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <!-- spring boot web支持:mvc,aop... -->
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
            </dependency>
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>

2. 创建生产者

2.1 创建application.yml配置文件

            server:
              port: 8080
            #activemq配置
            spring:
              activemq:
                broker-url: tcp://127.0.0.1:61616
                user: admin
                password: admin

 

2.2通过JMSTemplate模板发送消息

       @Component
            public class ActiveMQProvider {
                //注入JMSTemplate模板
                @Resource
                private JmsTemplate jmsTemplate;
                //创建方法
                public void sendMessage(){
                    //点对点,创建队列
                    ActiveMQQueue queue=new ActiveMQQueue("boot_queue");
                    //发送消息
                    jmsTemplate.convertAndSend(queue,"生产者产生的消息~");
                }
            }

2.3 创建客户端访问的方法

         @RestController
            public class ProController {
                @Resource
                private ActiveMQProvider activeMQProvider;

                @RequestMapping("/sendMessage")
                public String sendMessage(){
                    activeMQProvider.sendMessage();
                    return "success";
                }
            }

 

3. 创建消费者

3.1 创建application.yml配置文件

         server:
                  port: 8081
                spring:
                  activemq:
                    broker-url: tcp://127.0.0.1:61616
                    user: admin
                    password: admin

3.2 启动类添加监听

//消费者消费
                @JmsListener(destination = "boot_queue")
                public void getMessage(TextMessage message) throws JMSException {
                    System.out.println("消费者获取到消息:"+message.getText());
                }

 主题方式

1.生产者需要制定当前发送的主题,需要开启
          

       @Component
            public class ActiveMQProvider {
                //注入JMSTemplate模板
                @Resource
                private JmsTemplate jmsTemplate;
                //创建方法
                public void sendMessage(){
    //发布订阅:创建主题
                    ActiveMQTopic topic=new ActiveMQTopic("boot_topic");
                    //springboot默认是queue
                    jmsTemplate.setPubSubDomain(true);
                    //发送消息
                    jmsTemplate.convertAndSend(topic,"生产者产生主题的消息~");

                }
            }
//springboot默认是queue
jmsTemplate.setPubSubDomain(true);

这一步也可以改为在配置文件添加,如下红字配置,都可以

server:
  port: 8080
#activemq配置
spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: admin
    password: admin
  jms:
    pub-sub-domain: true

2.消费者消费同样开启,在启动类添加如下配置

//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;
            }


            //消费者消费  destination队列或者主题的名字
            @JmsListener(destination = "boot_topic",containerFactory = "jmsTopicListenerContainerFactory")
            public void getMessage(TextMessage message) throws JMSException {

                System.out.println("消费者获取到消息:"+message.getText());
            }

3.配置文件中加入

  jms:
    pub-sub-domain: true

 

 



 

posted @ 2020-02-15 20:58  怀鑫  阅读(447)  评论(0编辑  收藏  举报