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
分享到:
相关推荐
连接池是一种资源管理技术,通过复用已建立的数据库连接或网络连接,减少创建和销毁连接的开销,提高系统的性能和响应速度。 首先,我们来看自定义的ActiveMQ连接池。作者自己实现的连接池通常是为了满足特定场景下...
此外,还可以通过调整ActiveMQ配置,如设置更大的缓存大小,优化网络连接,提高消息处理的效率。 7. **安全性与监控**:ActiveMQ支持身份验证和授权,可以通过修改`users.properties`和`groups.properties`文件来...
SSL(Secure Socket Layer)是用于确保网络通信安全的一种标准协议,而双向认证(Mutual SSL/TLS Authentication)则进一步增强了这种安全性,它要求服务器验证客户端的身份,同时也要求客户端验证服务器的身份。...
连接池是一种资源管理技术,通过预先创建并维护一定数量的连接,避免了每次需要连接时创建新连接的开销。在高并发环境下,连接池可以显著提高系统的响应速度和并发能力。在ActiveMQ中,我们可以使用...
WebSocket协议是一种在客户端和服务器之间建立长久连接的网络通信协议,它允许双方进行全双工通信,即数据可以在任意方向上流动,而无需为每个数据包建立新的HTTP请求。WebSocket协议在现代Web应用中被广泛使用,...
网络连接模式允许多个 ActiveMQ broker 实例通过网络互连,形成一个集群,从而提升整个系统的消息处理能力,并实现故障转移和负载均衡。 **网络连接模式的作用** 网络连接模式的主要目标是将多个独立的 ActiveMQ ...
发布/订阅消息传递域的特点如下:(1)生产者将消息发布到topic中,每个消息可以有多个消费者,属于1:N关系(2)生产者和消费者之间有时间上的相关性,订阅某一个主题的消费者只能消费自它订阅之后发布的消息(3)...
通过遵循JMS规范,并提供多种连接协议、持久性和安全选项,ActiveMQ确保了不同系统之间的高效和安全通信。此外,其支持集群功能和多语言客户端API,使得ActiveMQ成为企业消息传递解决方案的一个强大选择。对于希望...
接下来,我们创建一个基本的JavaScript脚本,连接到运行ActiveMQ的服务器,并订阅与发布主题。以下是一个简单的示例: ```javascript const mqtt = require('mqtt'); const client = mqtt.connect('mqtt://your....
ActiveMQ 集群网络连接模式(Network Connector)是 ActiveMQ 提供的一种集群功能,旨在提高消息服务的横向扩展性和高可用性。通过将多个不同的 broker 实例连接在一起,作为一个整体对外提供服务,从而提高整体对外...
测试环境包括客户端(JMeter服务器)、ActiveMQ服务器以及网络连接,确保了独立且可复现的测试条件。 2.2 JMS结构图 JMS架构中,生产者通过JMeter发送消息到ActiveMQ,而消费者从队列或主题中接收消息。此测试涵盖...
STOMP是一种简单易用的网络消息传输协议,适合多种编程语言,包括Go。 首先,我们需要了解Go语言的基本概念。Go,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。...
总结一下,`activemq通过IP或特征码授权插件`是一种增强ActiveMQ安全性的策略,它通过自定义插件实现对连接请求的IP地址和特征码的验证。这要求开发者编写Java插件代码,集成到ActiveMQ配置中,并可能涉及到数据库或...
ActiveMQ允许应用程序通过创建连接、会话和消息生产者/消费者来交换消息。在这个场景中,我们将关注如何利用ActiveMQ的连接池功能,以优化资源管理和提高性能。 首先,理解`Connection`在ActiveMQ中的角色是至关...
- **连接断开的原因**:在ActiveMQ的Failover模式中,默认情况下,当检测到连接失败时,会触发一个重新连接的任务。如果该任务被标记为守护线程(daemon thread),则当主线程结束时,守护线程也将随之结束,这可能...
3. **网络连接**:多个Broker通过网络连接器相互连接,形成一个集群,共同分担消息处理工作,同时提供容错能力。 配置网络连接器通常在`activemq.xml`配置文件的`<broker>`节点内进行。例如,下面的配置创建了一个...
- **消息分发线程池**:通过设置 `org.apache.activemq.UseDedicatedTaskRunner` 为 `false`,可以让ActiveMQ使用一个线程池来处理消息分发,而不是为每个连接分配单独的线程。 - **内存配置**:确保运行ActiveMQ的...
在Spring的XML配置文件中,你可以定义一个`ConnectionFactory` bean,这将使用ActiveMQ的TCP连接工厂。示例配置如下: ```xml <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory...
7. **网络拓扑**:ActiveMQ可以通过网络连接形成集群,实现高可用性和负载均衡。在集群中,消息可以在各个节点间自动路由,提高系统的健壮性。 8. **管理工具**:ActiveMQ提供了一个Web控制台(webconsole),可以...
ActiveMQ,作为一款流行的开源消息中间件,也支持WebSocket协议,使得客户端可以通过WebSocket接口来接收和发送消息。 ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message ...