ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ActiveMQ

2020-06-14 13:55:56  阅读:190  来源: 互联网

标签:ActiveMQ topic spring msg org activemq public


添加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

 

标签:ActiveMQ,topic,spring,msg,org,activemq,public
来源: https://www.cnblogs.com/huqi96/p/13124587.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有