`
JFires
  • 浏览: 41729 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

4.3通过网络连接ActiveMQ(一)

阅读更多

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
2
1
分享到:
评论
3 楼 liguirong98 2013-05-10  
真的没有了?
2 楼 a2623567z 2012-04-24  
请问高手,后面还有吗。我真的想知道。
如果一台机要连接到另外一台机上的activemq,该怎么搞。
谢谢了。
1 楼 maishj 2012-03-20  
怎么没继续了啊

相关推荐

Global site tag (gtag.js) - Google Analytics