zoukankan      html  css  js  c++  java
  • activeMQ(二、与springboot集成)

    POOM文件

    首先导入activemq所需的jar包

    <dependencies>
            <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>
        </dependencies>

    生产者

    application.yml

    server:
      port: 8090
      servlet:
        context-path: /activemqProducer
    spring:
      activemq:
        broker-url: tcp://127.0.0.1:61616
        user: 123
        password: 123

    ActiveMqConfig

    package com.example.activemqtest.config;
    
    import org.apache.activemq.command.ActiveMQQueue;
    import org.apache.activemq.command.ActiveMQTopic;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.jms.Queue;
    import javax.jms.Topic;
    
    @Configuration
    public class ActiveMQConfig {
    
        @Bean
        public Queue queue(){
            return new ActiveMQQueue("queue2");
        }
    
        @Bean
        public Topic topic(){
            return new ActiveMQTopic("topic2");
        }
    
    }

    配置生产者要发送消息的队列或者主题,注入spring中

    ProducterController

    package com.example.activemqtest.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsMessagingTemplate;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.jms.Queue;
    import javax.jms.Topic;
    
    
    @RestController
    public class ProducterController {
    
        @Autowired
        private JmsMessagingTemplate jmsMessagingTemplate;
    
        @Autowired
        private Queue queue;
    
        @Autowired
        private Topic topic;
    
    
        @GetMapping("/sendMsgByQueue")
        public String sendMsgByQueue(String msg){
            jmsMessagingTemplate.convertAndSend(queue,msg);
            return msg;
        }
    
        @GetMapping("/sendMsgByTopic")
        public String sendMsgByTopic(String msg){
            jmsMessagingTemplate.convertAndSend(topic,msg);
            return msg;
        }
    }

    消费者

    @JmsListener(destination = "queue2")
        //方法返回发送给queue3
        @SendTo("queue3")
        public String handleMessage(String msg){
            System.out.println("接收到的返回是:" + msg);
            return "返回:"+ msg;
        }

    以上是消费者接收队列queue2的方式

    若要接收topic,需要增加配置

    server:
      port: 8091
      servlet:
        context-path: /activemqConsumer
    spring:
      activemq:
        broker-url: tcp://127.0.0.1:61616
        user: 123
        password: 123
      jms:
        pub-sub-domain: true
    @JmsListener(destination = "topic2")
        public void topicConsumer1(String msg){
            System.out.println("消费者1接收为:"+msg);
        }
    
        @JmsListener(destination = "topic2")
        public void topicConsumer2(String msg){
            System.out.println("消费者2接收为:"+msg);
        }
  • 相关阅读:
    for循环原来是这样
    C#中属性的作用
    腾讯、百度、阿里、微软面试题精选(不断更新)
    不容易:社会保险法历时3年终获通过 事关亿万百姓利益
    Oracle操作大对象BLOB示例
    Oracle操作大对象CLOB
    设计模式的分类和每种类型的作用
    LinkedList、ArrayList和Vector集合类型的区别和联系?
    hashmap,hashtable,TreeMap, WeakHashMap的区别和联系?
    hdu 2551
  • 原文地址:https://www.cnblogs.com/Unlimited-Blade-Works/p/11315904.html
Copyright © 2011-2022 走看看