• 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
    
    
    
    
    
  • 相关阅读:
    SPA项目开发之登录
    使用vue-cli搭建SPA项目
    ElementUI入门和NodeJS环境搭建
    struts文件上传
    Struts增删改查
    struts
    Maven
    easyui三
    EasyUi权限
    自定义MVC三
  • 原文地址:https://www.cnblogs.com/chx9832/p/12313645.html
Copyright © 2020-2023  润新知