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
分享到:
相关推荐
通过遵循JMS规范,并提供多种连接协议、持久性和安全选项,ActiveMQ确保了不同系统之间的高效和安全通信。此外,其支持集群功能和多语言客户端API,使得ActiveMQ成为企业消息传递解决方案的一个强大选择。对于希望...
测试环境包括客户端(JMeter服务器)、ActiveMQ服务器以及网络连接,确保了独立且可复现的测试条件。 2.2 JMS结构图 JMS架构中,生产者通过JMeter发送消息到ActiveMQ,而消费者从队列或主题中接收消息。此测试涵盖...
ActiveMQ集群通过将多个ActiveMQ实例连接起来形成一个逻辑上的集群,从而提高系统的可靠性和可用性。集群内的各个节点能够共享资源、负载均衡以及故障转移等功能,确保即使某个节点出现故障,整个系统的服务仍然可以...
- **配置方式**:通过`conf/activemq.xml`配置静态网络连接。 **7.3 动态网络连接** - **功能介绍**:支持Broker动态加入和离开网络。 - **配置方式**:通过配置文件或命令行参数设置动态网络连接。 #### 八、...
ActiveMQ是Apache的一个开源项目,它是一个功能丰富的消息代理,支持多种消息协议,包括JMS(Java Message Service)。 首先,我们来看标题提到的“4.3、多线程consumer 访问集群 static快(两个broker)1”。这里...
连接池是一种用于管理数据库连接的机制,可以复用数据库连接,减少创建和销毁连接的开销。 **2.6 异步并发** 通过异步编程模型,可以在不阻塞主线程的情况下执行耗时操作,提高系统的并发处理能力。 #### 三、...
- **创建数据源连接池**:指导如何在TongWeb6.0中创建一个新的JDBC连接池。 - **查看/编辑连接池**:提供了查看和编辑连接池配置的方法。 - **测试连接**:验证JDBC连接池的可用性。 - **删除JDBC连接池**:指导如何...