zoukankan      html  css  js  c++  java
  • 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
    
    
    
    
    
  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/chx9832/p/12313645.html
Copyright © 2011-2022 走看看