简单地说,使用 ActiveMQ 的方式是固定且直接的:启动 ActiveMQ 服务器,发送消息,接收消息。但你并未理解 ActiveMQ 背后运作的详情。在一些要求更高的场景里,需要理解并有能力自定义配置。虽然 ActiveMQ 提供了大量的配置项,但是先理解核心配置项才是最重要的。 第二部分就开始深入介绍 ActiveMQ 中重要的配置项,包括:连接代理,消息持久化以及安全性。这三项是学习理解 ActiveMQ 的首要必须的。
连接 ActiveMQ
本章主要知识点:
- ActiveMQ 连接 URLs 的介绍和用法
- 怎么用传输层连接器连接 ActiveMQ 客户端
- 怎么使用网络连接创建 ActiveMQ 服务集群
像 ActiveMQ 这种 JMS 代理最主要的功能就是为客户端应用提供了连接方式。也因此,ActiveMQ 提供了连接器(connectors)——可以提供客户端到代理(使用传输层连接)以及代理到代理(使用网络连接)的连接机制。ActiveMQ 不仅允许客户端使用多种协议连接代理,而且也允许其他代理创建连接通道并构建复杂的 ActiveMQ 代理网络布局。 我们本章先介绍连接器中被用于指明代理位置的 URIs。然后我们深入研究传输层连接器并解释客户端可以使用哪些协议连接 ActiveMQ 代理。
理解连接器 URIs
ActiveMQ 连接器 URIs 就是稍微扩展了普通的 URI 的功能。
Transport connectors
Transport connectors
这个词真不好翻译啊!反正就是,客户端连接代理时就用 Transport connectors
。每个用户连接代理时的要求是不同的,有的人想要高性能,而其他人可能想要更高的安全性等,ActiveMQ 试图覆盖这所有的使用场景,为每种场景都提供一种连接方式。
这里涉及到了客户端连接 ActiveMQ 代理所用的几种协议,关于这几种协议的解释,我们可以来看下官方文档。
跨协议
Apache ActiveMQ 是用 Java 写的消息代理,提供了 JMS,REST 以及 WebSocket 接口,并且,它支持多种协议以便不同的编程语言使用,包括:AMQP,MQTT,OpenWire 和 STOMP。
REST 接口
ActiveMQ 提供了 REST 接口以便任何互联网设备都可以通过标准的 HTTP 的 GET 和 POST 方法来生产或消费消息。 如果你对处理消息感兴趣,你可以查看 AJAX 或者 WebSockets 支持,或者去运行下 REST 例子。
从 REST 到 JMS 的映射关系
发布消息使用 HTTP POST 方法,消费消息使用 HTTP DELETE 或者 GET 方法。 ActiveMQ 内部有一个 Servlet 提供了集成 HTTP 和 ActiveMQ dispatcher 的支持。
这地方东西有点多,以后用到了再回来细看吧!
WebSockets 接口
除了 AJAX 接口外,在 5.4.0 之后我们为浏览器新增了 WebSockets 接口支持。
这地方东西有点多,以后用到了再回来细看吧!
AMQP 协议
即 Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,未面向消息的中间件设计。
MATT 协议
MQTT,即 Message Queuing Telemetry Transport,消息队列遥测传输,是 IBM 开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过 Twitter 让房屋联网)的通信协议。
OpenWire 协议
这个好像是 ActiveMQ 自己定义的一种协议。
STOMP 协议
STOMP,即 Streaming Text Orientated Message Protocol,流文本定向消息协议,是一种为面向消息的中间件设计的简单文本协议。
Connecting to ActiveMQ over the network
即客户端使用以上说的几种协议连接代理。
Network connectors
通过网络连接,把多个 ActiveMQ 实例连接起来形成集群,以追求更高的可用性和可伸缩性。所以前面的内容都在讨论客户端怎么连接代理,而本小节讨论代理怎么连接代理。
Dynamic networks
通过多播等协议实现的。