• ActiveMQ


    添加jar包依赖

    <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 boot配置

    spring.activemq.broker-url=tcp://192.168.1.133:61616
    spring.activemq.user=admin
    spring.activemq.password=admin
    #默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
    spring.jms.pub-sub-domain=true

    创建ActiveMQ配置类

    @Configuration
    @EnableJms
    public class JmsConfig {
    
        private static final String QUEUE_NAME = "active.queue";
         
        private static final String TOPIC_NAME = "active.topic";
     
        @Bean
        public Queue queue(){
            return new ActiveMQQueue(QUEUE_NAME);
        }
     
        @Bean
        public Topic topic(){
            return new ActiveMQTopic(TOPIC_NAME);
        }
    }

    一对一(队列):发送的消息只能由一个消费者接收

    //提供者
    @Component
    public class ActiveMQQueueProducer {
    
        @Autowired
        private JmsMessagingTemplate jmsMessagingTemplate;
        @Autowired
        private Queue queue;
    
        public void sendQueueMsg(String msg) {
            this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
        }
    
    }
    //消费者
    ckage org.huqi.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jms.annotation.JmsListener;
    
    import javax.jms.TextMessage;
    
    @Configuration
    public class Que_comsumer {
        @JmsListener(destination = "active.queue")
        public void recive(TextMessage msg) throws  Exception{
    
           System.out.print(msg.getText().toString());
        }
    }

    发布订阅:及时接收,如果超过时候后就无法接收到消息

    //提供者
    @Component
    public class ActiveMQTopicPublisher  {
    
        @Autowired
        private JmsMessagingTemplate jmsMessagingTemplate;
    
        @Autowired
        private Topic topic;
    
        public void sendTopicMsg(String msg) {
            System.out.println("发布信息:" + msg);
            this.jmsMessagingTemplate.convertAndSend(this.topic, msg);
        }
    
    }
    //消费者
    @Component
    public class ActiveMQTopicSubscriber {
        /**
         * 监听和读取topic消息
         * @param message
         */
        @JmsListener(destination = "active.topic")
        public void readActiveTopic(String message) {
            System.out.println("接受到:" + message);
        }
    }

    ActiveMQ无法写入对象解决,在spring boot配置文件中添加配置

    #将所有对象都加入jsm白名单中
    #允许所有包写入
    spring.activemq.packages.trust-all=true
    
    
    #指定包中的类加入白名单
    spring.activemq.packages.trusted=org.huqi.bean
  • 相关阅读:
    MySQL 重置Mysql root用户账号密码
    Git 在同一台机器上配置多个Git帐号
    JQuery 获取元素到浏览器可视窗口边缘的距离
    JQuery Ztree 树插件配置与应用小结
    JQuery iframe宽高度自适应浏览器窗口大小的解决方法
    JQuery jquerysessionjs插件使用介绍
    JQuery Deferred对象使用小结
    JQuery javascript实现父子页面相互调用
    JavaScript 使用new关键字调用函数
    CSS 让div,span等块级、非快级元素排列在同一行
  • 原文地址:https://www.cnblogs.com/huqi96/p/13124587.html
Copyright © 2020-2023  润新知