java 内嵌调用_技术大咖分享:Java消息中间件之ActiveMQ详解

4aaf10f6fe30b1b8226a494fd99985be.gif

ActiveMQ是什么?

ActiveMQ 是Apache出品,最流行的、能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

主要特点:

1、多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP 2、完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) 3、对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 4、通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上 5、支持多种传送协议:in-VM、 TCP、SSL、NIO、UDP、JGroups、JXTA 6、支持通过JDBC和journal提供高速的消息持久化 7、从设计上保证了高性能的集群,客户端-服务器,点对点 8、支持Ajax 9、支持与Axis的整合 10、可以很容易得调用内嵌JMS provider,进行测试

ActiveMQ消息传递的两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应;另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
  •  StreamMessage — Java原始值的数据流

  •  MapMessage–一套名称-值对

  •  TextMessage–一个字符串对象

  •  ObjectMessage–一个序列化的 Java对象

  •  BytesMessage–一个字节的数据流

ActiveMQ的使用方法

点对点: c65895873ec454b7c358d26ff335d0f0.png发布/订阅: 8fae1da2b33cae1d392daaa19ce6f08f.png在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:只有一个消费者将获得消息。生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。每一个成功处理的消息都由接收者签收。发布者/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:多个消费者可以获得消息.在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。使用其他的工程来学习, 工程需要添加jar包: f623ab8507cef6ae19aa57d469611c5c.png

Queue Producer

生产者:生产消息,发送端。第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。第二步:使用ConnectionFactory对象创建一个Connection对象。第三步:开启连接,调用Connection对象的start方法。第四步:使用Connection对象创建一个Session对象。第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。第六步:使用Session对象创建一个Producer对象。第七步:创建一个Message对象,创建一个TextMessage对象。第八步:使用Producer对象发送消息。第九步:关闭资源。 711c204e1e632c785306b3fcc1f0f0d4.png

Consumer

消费者:接收消息。第一步:创建一个ConnectionFactory对象。第二步:从ConnectionFactory对象中获得一个Connection对象。第三步:开启连接。调用Connection对象的start方法。第四步:使用Connection对象创建一个Session对象。第五步:使用Session对象创建一个Destination对象。和发送端保持一致queue,并且队列的名称一致。第六步:使用Session对象创建一个Consumer对象。第七步:接收消息。第八步:打印消息。第九步:关闭资源 e62cf9307fbf7f6967848ddc0cd9fe04.png文/云和数据JAVA技术专家 声明: 除云和数据原创文章外,本公众号分享和转载的文章皆为促进IT技术的传播,仅做交流学习使用,非商业用途。 如有文章或图片的原作者有异议或涉及版权问题,请立即联系我们,我们将在第一时间进行改正或删除,确保您的权益,谢谢支持! 相关链接:

喜讯 | 云和数据入选河南省第一批产教融合型企业入库培育名单!

第46届世界技能大赛云计算项目 河南省集训队开训仪式暨第一阶段工作会议圆满结束

第46届世界技能大赛—河南省选拔赛(云计算项目)圆满落幕!

喜讯!云和数据被河南省教育厅评选为省级大学生校外实践教育基地

点击文末“”咨询,免费来云和试听课程——UI视觉交互精英班、PHP全栈web高薪班、JAVA大数据精英班、HTML5全栈精英班、Unity虚拟现实大师班、全域电商精英班、大数据人工智能专家班、华为认证课程,座位有限,先抢先得51f8f60d821b1815dbe44f0f09760e59.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值