jms 的两种模式,p2p ,publish/substrib

(未完待续)浅谈微服务以及 常用中间件( zookeeper redis rabbitmq) 传统的单体框架,已经不满足目前公司战略规划要求,近几年“微服务“ 这个字眼,出现的越来越频繁,虽然有过一年多微服务项目经验,也很难把微服务解释清楚,到底何为微服务? 哈哈哈,好正经的开头,Martin Fowler曾在其blog上发表了”Microservices“的文章,正式提出了微服务架构,对于微服务的解释,他的定义为:微服务架构是一种架构模式,他 提倡将单一应用程序,划分为一个个独立的服务,服务之间相互协调,相互配合,为用户提供最终价值。 来一张图,感受一下微服务的魅力~ 将传统一个独... 阅读详情

p2p 点对点模式,  也就是一对一,服务端发送一条消息到Destination 即Queue   

虽然可能有n个客户端在队列中侦听消息,但只有一个可以读取到消息,之后消息将不存在,其他人没法读取

publish/substrib   则可以理解为一对多,

 

 

 

1、P2P模型
在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队 列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时 。
每个消息只有一个消费者 (Consumer)(即一旦被消费,消息就不再在消息队列中)
发送者和接收者之间在时间上没有依赖性 ,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。
接收者在成功接收消息之后需向队列应答成功
如果你希望发送的每个消息都应该被成功处理 的话,那么你需要P2P模型。

   适用场合:想让接收者进行且只进行一次处理

                     组件之间进行同步通信

 

 

2   在Pub/Sub模型中,有下列概念: 主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。客户端将消息发送到主题。多个发布者将消息发送到Topic,系统 将这些消息传递给多个订阅者。
 每个消息可以有多个消费者
发布者和订阅者之间有时间上的依赖性 。针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且,为了消费消息,订阅者 必须保持运行的状态。
当然,为了缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消 息。
如果你希望发送的消息可以不被做任何处理、或者被一个消费者处理、或者可以被多个消费者处理 的话,那么可以采用Pub/Sub模型(也就是说发布者不关心有多少侦听者)。

 

 

 

关于时间 的依赖性

          二种模型的实现结果:

         对于p2p 模型的每个消息只能有一个消费者  如果我们定义二个消息接受者的Bean那么只能有一端会接收到消息。当你把部署在Jboss中的消息接收Bean去掉以后,然后发送消息 此时消息在队列中,一旦你重新部署他会立刻就接收到刚刚发送的消息 所以它没有时间的依赖性,

           pub/sub 模型可以有多个消费者 在这个模型中如果我们定义多个接收消息的Bean当我们在客户端发送消息的时候二个bean都会接收到消息,所以他有多个消费者 但是如果你把Jboss部署中的消息接收bean去掉之后,发送消息。然后在重新部署,那么消息也无法接收到 ,所以说他有时间的依赖性。

 

 

 

 

 

=========================================================

p2p 的两种消息处理模式 :同步,异步

JMS P2P编程

  在JMS P2P通信方式中,发送程序将消息放入一个队列,根据通信要求,发送程序可以要求一个应答信息(请求-应答模式 ),也可以不要求立即获得应答(发送-遗忘 模式)。如果需要应答信息,发送程序通过消息头的JMSReplayTo 域向消息的接收程序声明应答信息应当放入哪一个本地队列。

   在请求-应答模式中,发送程序可以按照两种方式操作。一种称为伪同步方式,发送程序在等待应答消息时会被阻塞;另一种是异步方式,发送程序发送消息后不被 阻塞,可以照常执行其他处理任务,它可以在以后适当的时机检查队列,查看有没有它希望得到的应答信息。下面的代码片断显示了JMS程序发送消息的过程。

 

 

pub/sub方式 :
概念:topic,publisher,subscriber,主题,发布者,订阅者三个角色。主题和订阅者是一对多关系,一个主题可以被多个订阅者订 阅。当发布者向某个主题发送一条消息时,所有的订阅者都会收到。
如何理解订阅的概念呢,个人理解,分两种情况:
一、 创建一个订阅者时使用session.createDurableSubscriber(topic, clientId )方法创建为持久型订阅者时,该topic和clientId的订阅关系将被保存在服务器上,即产生了订阅关系。这样clientId这个id的订阅者将 在离线的时候,也不会丢失消息。这个订阅关系也可以理解为被持久化在jms服务器上了,使用jmx的监视控制台(我使用的activeMq),可以看到有 一个Subscription的节点,下面有你订阅主题时给定的客户端名字。可以使用unsubscribe 方法 取消订阅关系。

   二、 创建一个非持久化方式的订阅者时,只有在客户端订阅者连接到jms服务器时,订阅关系成立,订阅者离线时,订阅关系即取消,不会保存在服务器上,这也是非 持久化方式订阅者不能离线接收消息的原因吧。默认为广播方式,在没有订阅者连接到服务器时,发送的消息将丢失,不会保存在服务器。

     subSession.createConsumer(destination);
     subSession.createSubscriber(topic);

 

subSession.createDurableSubscriber(topic, name);    //name  是 一个jms 用来区别定阅者的id

 

 

 取消定阅

subscriber.close();

session.unsubscribe(name);  //只对持久定阅,

JMS消息服务器(一)——基础知识 JMS消息服务器(一)——基础知识1、概述 异构集成(heterogeneous integration)是消息传送机制在其中起关键作用的一个领域。无论它的成因是合并、并购、业务需求,或者仅仅是技术方向上的一个变化,越来越多的公司都正面临着在企业内部、跨企业集成异构系统和应用程序的问题。 消息传送机制还具有异步处理请求的能力,它为系统体系机构师和开发者提供的解决方案,能够减轻或消除系统 阅读详情

相关推荐

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5640

消息队列的两种模式及实现

转载:http://blog.youkuaiyun.com/heyutao007/article/details/50131089 Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 点对点与发布订阅最初是由JMS定义的。这两种模式主要区别或解决的问

noaman_wgs的博客 1万+

Linux安装消息队列IBM MQ 7.5开发版安装配置详解

消息队列IBM MQ 7.5开发版安装配置详解 文章目录消息队列IBM MQ 7.5开发版安装配置详解前言一、什么是IBM MQ?二、安装前准备1、安装前准备2、安装MQ Server3、启动实例4、创建队列一个名为TEXT的队列(测试)5、启动端口监听6、启动成功总结 前言 IBM 已经熟练地优化了 MQ(消息队列),在市场上已有超过 25 年的历史。借助 MQ(消息队列),如果无法立即传递消息,那么会在其等待队列中确保消息安全,直到保证传递为止。竞争产品可能会传递两次消息或根本不传递消息,而 M

zhx__的博客 5165

MQ-传输方式Topic和Queue的对比

Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表(): Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状态 topic数据默认不落地,是无状态的。 Queue数据默认会在mq服务器上以文件形式保存,...

weixin_30236595的博客 443

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 102

Class AB OPA STB仿真相位异常:从corner case到碰撞电离的排查与规避

本文深入分析了Class AB运算放大器(OPA)在STB稳定性仿真中,特定工艺角(corner case)下出现相位从0°开始的异常现象。排查发现,其根本原因在于高Vds引发的碰撞电离效应,通过衬底和电源网络引入了隐藏的正反馈通路。文章对比了修改衬底连接与优化电路降低Vds两种解决方案,并基于工程实践推荐了代价更小、兼容性更好的电路优化方案,成功规避了问题并完成流片验证。

grape的博客 636

JMS两种消息模型

前段时间学习EJB,接触到了JMS(Java消息服务),JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。 个人觉得这两个模型挺容易理解的,因为生活中的例子还挺多的。 1,  P2P模型 有以下概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定

葵歌小妖 5856

YOLO26 网络结构逐模块解析:Backbone/Neck/Head

本文解析了YOLO26目标检测网络的架构设计,重点介绍其在Backbone、Neck和Head三个核心组件的创新优化。Backbone采用改进的CSP模块与轻量级注意力机制,提升特征提取效率;Neck使用改进的BiFPN结构实现高效多尺度特征融合;Head采用完全解耦设计简化回归流程。文章详细分析了各模块的技术演进、实现细节和设计思想,通过流程图和代码示例展示了YOLO26的整体架构和关键组件实现。该研究对模型优化、定制开发和硬件部署具有重要指导意义。

一键难忘的博客 1247

JMS简介与ActiveMQ实战

1. JMS架构   Java 消息服务(Java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。JMS 在其中扮演的角色与JDBC 很相似,正如JDBC 提供了一套用于访问各种不同关系数据库的公共API,JMS 也提供了独立于特定厂商的企业消息系统访问方式。 使用JMS 的应用程序被称为JMS 客户...

石头边的老牛 459

Qt 国产嵌入式操作系统实现文字转语音功能(ekho库)

Qt 国产嵌入式操作系统实现文字转语音功能(TTS)_tts驱动 转文字-优快云博客在继上篇文章之后,甲方粑粑不满意使用eSpeak发出的声音太难听了,这就不得不找个替代品,声音稍微好听了一些。使用ekho开源库。Ekho(余音)是一个免费、开源的中文语音合成软件。它目前支持粤语、普通话(国语)、诏安客语、藏语、雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现。Ekho支持Linux、Windows和Android平台。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 2754

C#调用opencv的dll

opencv算法和界面配合,刚入职的时候尝试过,利用的MFC,调试起来很痛苦。 后来基本都没怎么用界面,DOS的黑窗口,opencv自带的显示界面及滑动条凑合着调试用。 最近有点时间,刚好双十一在一个视觉群里看到了一个讲C#调用opencv的dll的课程,鉴于群主也是那门课的讲师,在平时解答群员的问题的时候很细心,能力也很强,因此有了这篇文章。 根据相机不同动态调用相机默认的属性...

Learning by doing 2975

JMS(四): 点对点模型(P2P)

为什么80%的码农都做不了架构师?>>> ...

weixin_34367257的博客 346

Google Earth Engine(GEE)——使用归一化燃烧指数 (NBR) 绘制地表烧伤严重程度图

归一化燃烧指数(Normalized Burn Ratio, NBR)是一种遥感指标,用于评估野火或烧伤地面后的植被恢复情况。NBR能增强较大范围的火灾区域,如大于200公顷。它是通过比较远红外波段 (SWIR) 和近红外波段 (NIR) 的反射率来计算的。SWIR波段测量烧伤地面的反射率,NIR波段测量没有受到烧伤影响的植被的反射率。NBR的计算公式为:NBR =(NIR-SWIR)/(NIR + SWIR)。其中,NIR为近红外波段,SWIR为短波红外波段。

此星光明博客 3464

转------ms 的两种模式,p2p ,publish/substrib

[size=medium]来自:http://blog.youkuaiyun.com/jixiuffff/archive/2010/07/30/5776057.aspx p2p 点对点模式, 也就是一对一,服务端发送一条消息到Destination 即Queue 虽然可能有n个客户端在队列中侦听消息,但只有一个可以读取到消息,之后消息将不存在,其他人没法读取 publish/substr...

qsh123 175

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jms p2p和PubSub模型总结

首先先总结下jms规范下定义的实现接口:     ConnectionFactory 接口(连接工厂)   用户用来创建到JMS提供者的连接的被管对象。JMS客户通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改。 管理员在JNDI名字空间中配置连接工厂,这样,JMS客户才能够查找到它们。根据消息类型的不同,用户将使用队列连接工厂,或者主题连接工厂。 Connectio...

OlympusMan的博客 366

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

理解JMS规范中消息的传输模式和消息持久化

JMS规范定义了2种消息传输模式:持久传送模式和非持久传输模式。发送者可以通过如下类似的代码进行设置 TopicPublisher publihser = session.createPublisher(topic); // 设置持久化传输 publihser.setDeliveryMode(DeliveryMode.PERSISTENT);这种方式对publisher发送的所有消息都有效,相

aty 6100

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JMS与MQ详解

《一》 1.ActiveMQ概述     企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。因此,消息传递可以满足应用间的通知和互相操作。但是开源的解决方案是到最近10年才出现的。Apache ActiveMQ就是其中一种。它使应用间能以异步,松耦合方式交流。ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。  ‍   Act

我喂自己袋盐 2万+

(九)JMS的两种消息模型(Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub))应用举例

1、P2P模型 在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。  每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)  发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没

u013760858的专栏 2111

JMS的规范,以及ActiveMQ中p2p和publish/subscriber2中模式

JMS规范文档地址如下: http://udn.yyuap.com/doc/JMS2CN/01_introduction/index.html JMS是什么?             Java JMS是SUB提出的旨在统一各种MOM系统接口的规范,它包含点对点(Ponit to Point,PTP)和发布/订阅(Publish/Subscribe, pub/sub)2种消息模型,提供

qq383264679的专栏 2208

JMS的两种模式 P2P,PUB/SUB

1、P2P模型 在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。  每个消息只有一个消费者 (Consumer)(即一旦被消费,消息就不再在消息队列中)  发送者和接收者之间在时间上没有依赖性 ,也就是说当发送者发送了消息之后,不管接...

modabobo 255

深入浅出JMS(一)--JMS基本概念

摘要:The Java Message Service (JMS) API is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages...

dawuafang 1112

使用Jmeter测试JMS

前言:使用Jmeter测试ActiveMQ的JMS消息,网上有一篇,但是图片看不了,具体参数填什么也不清楚,因此决定总结这篇 所使用的Jmeter版本2.8,activemq版本5.6 一、创建jndi.properties文件 由于 jmeter 是通过 jndi 来获得 jms 中相关对象的,如 ConnectionFactory 和 Destination,所以在 jmet

hunterno4的专栏 8811

JMeter之JMS接口测试

JMeter是Apache开发的一款小巧易用的开源性能测试工具,由java语言开发。JMeter不仅免费开源而且功能强大、易于扩展,如果有一定Java开发基础的话还可以在JMeter上做扩展开发新的插件等,几乎能满足各种性能测试需求。JMeter中使用Sampler元件(取样器)来模拟各种的类型的请求数据格式,类似于LR中的协议(比LR中的协议概念更广),如:http、ftp、soap、tcp等等

曹洪双 4548

理解JMS规范中的持久订阅和非持久订阅

jms1.1规范针对publisher/subscriber模型提出了持久订阅和非持久订阅者。我们用现实生活中的例子来说明,持久订阅和非持久订阅的区别。 1.非持久订阅    考虑学生听老师讲课的情景,大学老师讲课,一部分学生会去教室听课,另一部分学生会选择逃课在寝室睡觉。开始上课前,老师可能会点名,在教室听课的同学知道这个消息,逃课的同学就不知道这个消息(除非朋友电话通知的情况)。即老师发布

aty 6326

topicpublisher (jms)

目的地类型JNDI名字连接工厂类型Topic/Queuejava:/ConnectionFactoryJVMTopic/Queuejava:/XAConnectionFactoryJVM支持XA事务Topic/QueueRMIConnectionFactoryRMITopic/QueueRMIXAConnectionFactoryRMI支持XA事务Topic/QueueConnectionFact...

Java-Jinguo 298

使用JMS发布订阅topic,传递ObjectMessage

使用工具eclipse+activeMQ和前一篇完全相同 建立两个工程,一个里面放publisher.java+Book.java                 另外一个工程里放subscriber.java+Book.java    两个工程里的Book是一模一样的,分别实现Serializable接口,要求序列号也是相同的: private static final long ser

meijie_h的博客 5396
上一篇: jms 消息的确认模式
下一篇: jms Queue 示例 ,服务端向客户端发送消息,并等待客户端返回消息
jixiuffff
博客等级 码龄19年 87粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值