ActiveMQ in Action-4.1 Understanding connector URIs- 高飞网

4.1 Understanding connector URIs

2016-05-23 15:43:16.0

本章包含:

· 一个ActiveMQ连接器URI的描述和示例
· 如何用协议连接器将你的客户端连接到ActiveMQ
· 如何用网络连接器创建ActiveMQ消息服务集群


    JMS服务端的主要角色就像是ActiveMQ为客户端应用提供的一个通讯基础架构。因为如此,ActiveMQ提供了连接器,连通性机制提供了客户端到服务端(client-to-broker)的通讯(利用协议连接器(protocol connectors)),另外服务端到服务端的通讯(利用网络连接器(network connnector))。ActiveMQ允许客户端使用多种协议连接到服务端,也允许其他的服务端创建通讯通道并搭建复杂的ActiveMQ服务端网络。

    我们通过解释连接器URIs来开始本章,连接器URIs即我们连接到服务端的地址。之后,我们会剖析协议连接器并解释什么是可以连接到ActiveMQ服务端的协议。

    注意:我们使用的术语连接器(connector)和(协议)protocol。协议是一个通用的概念,而连接器是ActiveMQ的特指的机制,但是每个ActiveMQ连接器,就如你看到的,实现了标准的协议并在协议之后命名。可以通过上下文清析地知道我们正在讨论的是一般的协议还是ActiveMQ特指的。我们首选要解释如何配置协议连接器并通过改造股票投资项目的例子,用不同的连接器中来演示。所以稍后我们可以演示他们。然后我们深入了解特定的连接器。有许多的连接可以连接到ActiveMQ,如我们将要讲到的TCP/SSL/HTTP等。之后会介绍嵌入式服务端使用VM协议。

    最后ActiveMQ使用网络连接器集群的基本概念也会涉及到。我们会演示给你如何创建服务端静态网络(static networks of brokers)使用静态协议(static protocol),也会演示客户端如何使用失效转移协议(failover protocol)可靠地连接到服务端。动态网络使用多路广播协议(multicast)和发现协议(discovery)也会涉及。这部分仅介绍服务端终端使用的基本的概念和协议,更详细的讲解在第10章。


4.1 理解连接器URIs

    在讲解连接器细节和它们在ActiveMQ架构中所扮演的角色之前,理解连接器uri(connector uris)是很重要的。统一资源标识符(Uniform resource identifiers(URIs)),已不是一个新概念了。你可能无意识的已经使用过它很多次了。URIs,我们首页介绍在万维网中使用的资源地址。规格说明书(http://mng.bi/8iPP)定义了URI作为“一个紧凑的字符串,用以标识一个抽象的或物理资源”。因为URI概念的简单和灵活性,在网络服务的很多场景中都有应用。我们每天使用的网站url和电子邮件地址就是uri的常用例子。

    不必太深入去讲uri,让我们总结下uri的结构。这些介绍对于在ActiveMQ的连接器中使用已经足够。

每个uri都有下面的基本格式:<scheme>:<schemem-specific-part> 如:

mailto:users@activemq.apache.org

这里的mailto即是scheme。跟着的是一个电子邮件地址唯一标识了我们用的服务和服务中特定的资源。最常用的uri模式是层级uri。如下:

<scheme>://<authority><path>?<query>

这种类型的uri被用来标识web站点。这种uri被称为url(Uniform Resource Locator):

http://www.nabble.com/forurm/NewTopic.jtp?forum=2356

上面的url使用http作为scheme,包含了path和query元素,用以标识额外的参数。

    由于它们的简单灵活,uri在ActiveMQ被用以定位一个不同类型连接器的特定的服务端。如果我们看一下第3章的例子,我看到一个我们已经用过的连接到服务端的uri:

tcp://localhost:61616

这是ActiveMQ中的一个典型的层级uri应用。可以表达为“创建一个tcp连接器连到主机localhost端口61616”

    ActiveMQ使用的这种简单的层级uri有时被称为low-level connectors(底层连接器),用以去实现基本的网络通讯协议。连接器uri使用scheme部分标识底层使用什么网络协议,path部分标识一个网络资源(经常是host+port),query部分标识连接器的额外配置参数。图4.1剖析了uri。这个url扩展了前面的例子,指定服务端要记录所有命令log(trace=true),这只是tcp协议使用可先项的一个示例。

ActiveMQ的失效转移协议(failover protocol)支持自动重连,当客户端当前连接的服务端失效时自动连接另一个服务端的能力。第10章会讲到,ActiveMQ通过配置一个复合的(composite)uri使这项任务更易操作。这种复合的uri用于配置这种自动连接。在图4.2,你能看到一个典型的复合uri

既然scheme部分或uri标识了使用的协议(static协议后面会讲到),scheme-specific的部分标识了一个或多个底层uri(low-level uris)用以创建一个连接。当然了,每个底层uri和更高的复合uri能也能包含query部分提供特定连接器的可选项。

注意:因为复合uri开始变得复杂,用户经常会尝试在其中插入空格使之可读性更好。这样的空白字符是不允许主的。因为uri规范不允许(java是实现这个标准)。这经常会导致ActiveMQ配置出错,所以留意不要在你的uri当中加入空格。