上一章实现了点对点的消息模式,接下来试着实现一下主题模式。
两者代码大致相同,但却让我纠结了好久才成功。
首先要理解一下主题模式的概念:
同样是发布者和消费者,这里发布者将消息发布到一个主题下,这时,订阅了这个主题的消费者就能接收到发布的消息。
简单来说,就像是订阅杂志,从你订阅杂志开始,你就能收到接下来出的杂志,但你肯定收不到之前已经发布的杂志。
这是与队列不同的地方,队列类似把消息放到一个地方,等着消费者过来取,取走了就没了,只有一份;主题是把消息复制发送给所有订阅了的消费者,只发送一次,所以后订阅的收不到这个消息。
以上是我的理解,有错误的地方请指正,谢谢。
接下来就是代码:
发布者的代码基本相同,唯一改变的地方是建立地址:

这里用的是createTopic方法,因为使用的是主题模式。
然后需要一个监听器,相当于帮助消费者订阅主题的:

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;public class MyMessageListener implements MessageListener {@Overridepublic void onMessage(Message message) {try {System.out.println("topic message" + ((TextMessage) message).getText());} catch (JMSException e) {e.printStackTrace();}}
}

然后就是消费者的代码,同样修改不是很大:

这里修改了两个地方,一个是创建地址改为创建主题。另一个是将接收消息的操作交给监听器执行。
代码写好以后,先运行消费者类,然后运行发布者类。
在控制台可以看到输出:

我这里用了三个线程进行测试,可以看到三个消费者都分别拿到了消息数据。

从零开始···AMQ主题模式实现相关推荐

  1. AMQ初级使用(队列模式+主题模式)

    队列模式 1.生产者代码: package com.zzf.jms.queue;import org.apache.activemq.ActiveMQConnectionFactory;import ...

  2. java 配置jmstemplate_SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解...

    1.导入jar包: org.springframework.boot spring-boot-starter-activemq org.apache.activemq activemq-pool 2. ...

  3. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置、色彩设置)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置.色彩设置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜 ...

  4. RabbitMQ六种队列模式-主题模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题 ...

  5. 【转】RabbitMQ六种队列模式-5.主题模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题 ...

  6. RabbitMQ主题模式(Topic)

    主题模式(Topic) 主体模式其实就是在路由模式的基础上,支持了对key的通配符匹配(星号以及井号),以满足更加复杂的消息分发场景. "#" : 匹配一个或者多个 "* ...

  7. 代码主题darcula_darcula主题模式是()模式。_学小易找答案

    [多选题]android studio安装并配置完成后,在命令行窗口输入()命令验证配置成功. [填空题]darcula主题模式是()模式. [单选题]当前unity官网最新版本是() [多选题]如何 ...

  8. rabbitmq入门(四)Topics主题模式

    文章目录 Topics主题模式 代码实现 测试 总结 下一章 Topics主题模式 交换机类型为 topics - 将路由和某个模式匹配,# 匹配一个或者多个,* 匹配一个.例如交换机绑定的routi ...

  9. 五、交换机 与 发布/订阅模式、路由模式、主题模式

    RabbitMQ目录 文章目录 交换机 与 发布/订阅模式.路由模式.主题模式 1.Exchanges(交换机) 1.1. Exchanges 概念 1.2. Exchanges 的类型 1.3. 无 ...

最新文章

  1. 关于tcp、http可能你想知道的那些事
  2. js大屏导出图片_整理了30个实用可视化大屏模板,附源文件+工具
  3. 介绍神经网络_神经网络介绍
  4. 【抢鲜版】ArcGIS 10.7手把手经典图文安装教程(附安装包下载地址)
  5. [Linux]几个armhf的ubuntu源
  6. 字典使用与内部实现原理
  7. ASP.NET Excel数据导入数据库
  8. linux fdisk ntfs,2014.1.2 学习记录(fdisk、ntfs)
  9. PHP-利用阿里云邮件推送免费发邮件详细步骤
  10. 随机森林算法原理解析
  11. 3年级计算机课程安排,人教版三年级信息技术教学计划
  12. android canvas 背景图片,Android更改canvas背景颜色而不会丢失任何图纸
  13. 使用神器you-get获取萧大bilibili课程视频
  14. 详解sprintf()sprintf_s()
  15. js数据过滤算法搭建
  16. hiredis的各种windows版本
  17. BaiduFaceApi.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
  18. Google天气Xml文件
  19. 读书笔记-Icepak自然冷却模拟设置步骤
  20. c++商品销售管理系统实现

热门文章

  1. 文献综述:5.文献资料的搜集和整理
  2. 蝴蝶效应,青蛙现象,鳄鱼法则,鲇鱼效应,羊群效应,刺猬法则,手表定律,破窗理论,二八定律,木桶理论,马太效应,这些你都明白吗
  3. socket网络编程——基于socket通信实现对客户端与服务器间的文件互传
  4. Android Studio使用cmake配置c++开发Admob
  5. 2020年中国休闲渔业产业现状分析,整体产业快速扩展,疫情下产业市场受阻「图」
  6. Qt之实现3D纹理渲染自由旋转空间立方体
  7. A. Rook, Bishop and King
  8. 如何全面建设全面质量管理即TQM(Total Quality Management)
  9. 孪生素数对php编写,[原创]孪生素数与素数的几率公式
  10. c51汇编语言典型例子详解,51单片机典型开发实例大全.pdf