4.3通过网络连接ActiveMQ
ActiveMQ最常用的场景是将它作为一个Java应用来使用。这意味着客户端(生产者和消费者)必须使用一些网络协议来连接代理器目标。在这一节,我们将介绍那些可以用在客户端-代理器交互场景中的网络协议。
我们先介绍TCP连接器,它最常用并且能提供理想的性能。然后是NIO连接器,它底层使用了TCP网络协议,但因为还用到了NIO Java API所以比TCP连接器有更好的伸缩性。UDP网络协议也经常被使用,所以UDP连接器也在讨论清单里。UDP协议与TCP相比带来一些性能的提升,但也损失了一些可靠性。UDP连接器也如此。因为UDP连接器的不可靠性,所以它使用的场景较少。SSL连接器能够与代理器维持一个安全连接。最后,我们将向你展示如何使用HTTP连接代理器。当然,在每一部分我们会讨论各种连接器的利弊。所以,你也可以考虑只阅读你感兴趣的部分,然后直接跳过去阅读下一章。表4.1包含了各种连接器的一个简要描述。现在让我们开始默认的TCP协议。
4.3.1 传输控制协议(TCP)
现在对人们来说,TCP协议可能和电力一样重要。作为一个基础的因特网协议,几乎所有的在线交流都用到它。像email和web等很多服务都使用它作为底层的网络协议。
希望你己经对TCP基本信息有了了解,我们将从引述RFC793协议开始。(http://mng.bz/Bns2):
Transmission Control Protocol(TCP)是为分组交换主机及内部系统间交换提供可靠的网络而设计的。
既然代理器和客户端应用是需要通过可靠的网络来交换的,那么很容易理解为什么TCP对于JMS实现来说是一个理想的协议。所以,TCP作为ActiveMQ最常用的连接器并不让人感到意外。在通过网络交换消息前,需要先把消息序列化成合适的形式。使用wire协议,消息被序列化成字节序列在电线上发送。ActiveMQ使用的默认wire协议叫做OpenWire。该协议规范可以在ActiveMQ网站找到(http://mng.bz/u2eT).OpenWire协议不止可以用在TCP网络传输,也可以用在其它网络协议上。它的目的是高效地,并且允许在网络上快速交换数据。还有,像OpenWire这样一个标准的,开放的协议能够在各种编程环境中被使用。这个协议和其它ActiveMQ可用的wire协议将在第九章讨论。
就像我们在前面章节看到的,一个默认的代理器配置会在端口61616上监听客户端的TCP传输连接。TCP连接器URI使用下面的语法:
tcp://hostname:port
?key=value&key=value
注意黑体字部分是必需的。在问号右边的key value对是可选的,并且各组key,value间用&符号分隔。
在本节或之后,我们不会完整地讨论该传输协议的所有可选的部分。这些东西应该放到网上的参考页面。最新的TCP连接器参考页是(http://mng.bz/ngU2)。
下面的配置片段提供了一个使用TCP连接器的例子:
<transportConnectors>
<transportConnector name="tcp"
uri="tcp://localhost:61616?trace=true"/>
</transportConnectors>
注意到trace选项可以被添加到URI后面。这个选项建议代理器记录所有通过该连接器发送过来的命令,这对调试非常有帮助。
重要提示
:修改配置文件后,ActiveMQ必须重启才能生效。
上面的内容概述了客户端使用TCP连接代理器。作为参考,下面的例子演示了消费者如何使用TCP连接器。
$ mvn exec:java -Dexec.mainClass=org.apache.activemq.book.ch4.Consumer \
-Dexec.args="tcp://localhost:61616 CSCO ORCL"
ORCL 65.71 65.78 up
ORCL 66.07 66.14 up
ORCL 65.93 65.99 down
CSCO 23.30 23.33 up
...
使用TCP连接器的好处有:
- 高效----这个连接器使用OpenWire协议将消息转换成字节流,所以在网络上传输非常高效。
- 可用----TCP是使用最广的一种网络协议,而且在很久前就被Java所支持。所以,该协议几乎可以支持你选择的所有平台。
- 可靠性----TCP协议保证消息不会丢失。
- 大小: 42.3 KB
分享到:
相关推荐
发布/订阅消息传递域的特点如下:(1)生产者将消息发布到topic中,每个消息可以有多个消费者,属于1:N关系(2)生产者和消费者之间有时间上的相关性,订阅某一个主题的消费者只能消费自它订阅之后发布的消息(3)...
自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用
使用activemq依赖库连接, 该项目为java工程,内有ssl证书生成方式链接,不清楚可私信
自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用,自己在网上找的时候好多都是纯Demo性质的,没有好的思想可以学习,希望我的劳动成果可以供你学习借鉴
下载后可直接导入Maven项目运行,包含ActiveMQ的连接代码以及数据插入和读取测试
ActiveMQ如何整合Spring并使用连接池的方式,还有一些必须基础jar包
本文实例讲述了php实现通过stomp协议连接ActiveMQ操作。分享给大家供大家参考,具体如下: 前面介绍了php ActiveMQ的安装与使用,这里再来讲述一下php通过stomp协议连接ActiveMQ。 一、安装php的stomp扩展 ...
activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子activeMq的一个小例子...
Activemq-MQTT-Websocket库Js文件mqttws31.js 前端使用Websocket连接Activemq中间件的Js库文件
ACTIVEMQ实战部分翻译,只翻译了第一章到第四章的第三节
ActiveMQ高并发处理方案
WebSocket协议接收ActiveMQWebSocket协议接收ActiveMQWebSocket协议接收ActiveMQWebSocket协议接收ActiveMQ
springboot整合 activeMq 生产者 发送消息 包含队列模式点对点发送消息 以及 主题模式一对多发送消息 这是生产者的demo producer; 需要配合消费者的demo consumer 使用
activemq消息测试工具
ActiveMQ_使用failover模式进行连接切换时,线程断开 ,ActiveMQ_使用failover模式进行连接切换时,线程断开
ActiveMQ集群:网络连接模式(network connector)详解
高可用之ActiveMQ集群:网络连接模式(network connector)详解
了解ActiveMQ入门
activemq开发依赖的jar,导入到java项目中,可以用于连接activemq