activeMq有两种模式,说下个人理解

activemq 8186 管理端口 61616 默认服务端口

queue队列模式

topic 主题模式

队列模式: 生产者生成消息存入队列,消费者通过监听队列的queue消费者负责消费,且每个消息只能消费一次.

应用场景: 登陆成功,记录日志/记录状态/记录ip 等的一些列操作,可以异步执行,相对于来说不须要同步的操作,可以保证操作要求的请求不丢失

主题模式: 生产者生成消息,发布消息,订阅之后的消费者都可以读取到发布的消息,并且所有消息均可被多个消费者都消费一次

应用场景: 商城下单成功后,发送一条成功的消息,被日志系统/库存系统/物流系统 分别读取到,并做相应操作

springboot+activemq整合

1 引入pom依赖

<groupId>org.springframework.boot

<artifactId>spring-boot-starter-activemq

<version>1.5.20.RELEASE

<groupId>org.messaginghub

<artifactId>pooled-jms

<version>1.0.4

</dependency>

2  分别编写 生产者 消费者  配置类

@Component

public class ActiveSend {

@Autowired

private Queuequeue;

@Autowired

private Topictopic;

@Autowired

private JmsMessagingTemplatejmsMessagingTemplate;

public void sendQueue()throws JMSException {

ObjectMessage objectMessage =new ActiveMQObjectMessage();

objectMessage.setObject("nihao");

jmsMessagingTemplate.convertAndSend(queue,objectMessage);

}

public void sendTopic()throws JMSException {

ObjectMessage objectMessage =new ActiveMQObjectMessage();

objectMessage.setObject("nihao");

jmsMessagingTemplate.convertAndSend(topic,objectMessage);

}

}

@Component

public class ActiveListenner {

@JmsListener(destination ="active-queue")

public void reciveQueueMsg(ObjectMessage message)throws JMSException {

System.out.println("收到的消息"+message.getObject().toString());

}

@JmsListener(destination ="active-topic")

public void reciveTopicMsg(ObjectMessage message)throws JMSException {

System.out.println("主题收到的消息"+message.getObject().toString());

}

}

@Configuration

public class ActiveMqConfig {

@Bean

public Queuequeue (){

return new ActiveMQQueue("active-queue");

}

@Bean

public Topictopic (){

return new ActiveMQTopic("active-topic");

}

}

做一下说明,队列模式/主题模式,都是以配置类中的 关键字为判断对象,且两种模式不能共存

目录结构 监听1是监听复制过去的,为了测试

为了测试什么呢?

测试队列模式,是否两个消费者都消费,且均分

测试主题模式,是否消息产生后,两个消费者都消费一次

yml 配置:

spring:

jms:

# 默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置

pub-sub-domain:false

# activemq消息队列

activemq:

broker-url: tcp://172.18.3.180:61616

#是否是内存模式(内置MQ,true是 false否)

in-memory:false

# 等待消息发送响应的时间。设置为0等待永远

send-timeout: 0

user:'admin'

password:'admin'

packages:

#信任所有的包

trust-all:true

pool:

#是否替换默认的连接池,使用ActiveMQ的连接池需引入的依赖

enabled:false

pub-sub-domain:false 不启用主题模式,即队列模式,当为true时,为主题模式

现在是队列模式,编写测试类测试

运行queueTest,产生10次消息
一个监听/一个监听1 分别打印五次,共十次

改变配置 将yml中的配置 pub-sub-domain:false 变为pub-sub-domain:true,开启主题模式

执行topicTest方法,只产生一条消息
监听/监听1 分别消费一次,共消费两次

假如有10个监听者,那么主题模式下(topic),一个消息将被消费十次

2020-07-28 activeMq 两种模式的测试相关推荐

  1. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    严格模式与混杂模式--如何触发这两种模式,区分它们有何意义. 在标准模式中,浏览器根据规范呈现页面: 在混杂模式中,页面以一种比较宽松的向后兼容的方式显示. 浏览器根据DOCTYPE是否存在以及使用的 ...

  2. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)

    11.2之前,oracle的lgwr写入模式为post/wait 11.2之后新增了polling模式,可以与post/wait模式自动切换 通过隐藏参数 _use_adaptive_log_file ...

  3. 浏览器的两种模式quirks mode 和strict mode

    在看js代码时,有时会看到关于quirks mode(怪异模式)和strict mode(严格格式)的东西,一直也没深究怎么回事,只是零零碎碎的有些概念,最近终于受不了这种似懂非懂的感觉,决定好好学习 ...

  4. 2021-12-23 网工基础(十四) 链路聚合的两种模式、堆叠、集群、IP路由基础

    一 链路聚合的两种模式 1.手工模式(管理员手工指定,无协议报文.没有开销) 2.LACP模式(交换机之间会交互LACP的协议,会有一点儿报文交互)一般正常情况下推荐使用LACP模式. 一般自动协商都 ...

  5. 2021年大数据Spark(九):Spark On Yarn两种模式总结

    目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...

  6. 简述python中怎样导入模块_Python中导入模块的两种模式,import

    import import pandas import pandas as pd 使用函数方式:.(),或者.() 比如 pandas.read_csv("data/stock.csv&qu ...

  7. FTP的两种模式和在实际工作中应用

    FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端 ...

  8. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)

    为什么80%的码农都做不了架构师?>>>    一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...

  9. ebc是什么意思_UEFI+GPT和Legacy+MBR两种模式安装的系统有什么区别

    UEFI+GPT和Legacy+MBR两种模式安装的系统有什么区别?很多电脑小白都搞不懂UEFI.GPT.BIOS.MBR到底是什么意思,下面跟随小白系统一起深入了解下UEFI+GPT和Legacy+ ...

  10. 树莓派GPIO的两种模式区别

    2019独角兽企业重金招聘Python工程师标准>>> 树莓派GPIO有两种模式:板上(BOARD)模式和BCM模式 一.板上模式 可以看作是电脑板上的引脚编号与处理器引脚编号一样. ...

最新文章

  1. Java调用python打包的程序.exe,包括获取exec()中打印的日志,亲测有效
  2. 2020 Java 面试高薪攻略.pdf
  3. OKR不但是目标管理工具,也是沟通工具
  4. linux 无线网卡命令iwlist iwconfig iw
  5. 模糊数学笔记:七、模糊综合评判决策
  6. 【Python入门】一个有意思还有用的Python包-汉字转换拼音
  7. hydra图形化工具下载_Hydra for Mac 4.0.4 专业的摄影图像工具
  8. Dotnet Core 优雅的命令行实现
  9. wrapper 并集如何使用
  10. C++——统计多行单个字符类型个数
  11. 【C语言进阶深度学习记录】八 C语言中void的分析
  12. UVA 10651 - Pebble Solitaire
  13. Verilog设计中的锁存器
  14. 服务器端网站自适应,[移动SEO]PC端和移动端最佳适配方案
  15. Excel中的Vlookup函数操作实例
  16. 世人谓我太疯癫,我笑世人看不穿
  17. NYOJ 1248 海岛争霸 河南省赛真题 Floyd 或者 并查集
  18. html实现在线聊天,利用HTML5实现电脑端微信聊天窗口界面
  19. VOLTE关键技术:锚定、被叫域选择
  20. 数独(SuDoku)介绍

热门文章

  1. seata分布式事务处理教程
  2. 小米官网首页(html+css+JavaScript)
  3. 稻盛和夫「活法」| 读书笔记系列01
  4. 10大程序员必逛网站,良心推荐,建议收藏!
  5. 《浦岛太郎》——太宰治
  6. 证书无效打不开网站?如何修复Mac上的无效证书错误
  7. 用python祝福父亲节_父亲节送给父亲的祝福语,挑一句话发朋友圈!
  8. 信息物理社会融合系统:一种以数据为中心的框架
  9. VS2015安装配置assimp和glm
  10. 第六周助教工作总结——NWNU李泓毅