原文可以参考这里: http://activemq.apache.org/topologies.html
今天在研究如何为ActiveMQ做集群,在找文档的过程中,发现这篇文章,感觉对理解ActiveMQ工作方式很有用,在这里打算把这篇文章翻译一下,权当做个笔记:, 自己解释的部分会使用"引用"表示出来.
一. 拓扑结构
我 写道
这个图就不翻译了, 一些名词做下解释:
1. Store and Fowrward Network Federation:
个人理解,就是一个消息路由分发系统, Broker(消息中间人)接收到消息后,会通过这个系统对消息进行存储或者分发,当然Broker属于ActiveMQ服务器端的一部分(内嵌Broker除外)
2. Broker(消息中间人)
感觉跟那个 Message Provider 说的是同一东西,在刚开始接触JMS时, 总是被这两个名词搞晕. JMS规范中叫Provider, ActiveMQ叫Broker. Broker可以在activemq.xml文件中进行配置.(Broker 和 Message Provider 好像有区别,不过我是这么理解,如果有明白的希望给解释一下)
二. 部分协议的解释以及拓扑结构解释
1. VM 协议:
这个协议主要用于单元测试中,限制JMS只能在单一的JVM运行, 使用方式如下:
vm://localhost
我们还一个使用它划分消息组. 例如, 如果要在同一JVM中,使用不同的JMS网络逻辑,则需要进行如下配置:
vm://localhost/foo
这样可以确保不同的部分之间可以不相互影响, 不过我们也可以使用唯一topic(主题)和queue(列队)的destination 来确保消息在同一逻辑网络中进行通信.
我 写道
这里看的人一头雾水, 这里需要解释一下.
在接触JMS之前,我研究过
Pushlet
的,他是基于JMS 发布订阅模式的服务器推送框架,他的主题是以树状结构进行管理. "/"代表根主题, 如果给该主题发送消息,则所有订阅者都可以收到消息.如果如题结构如下所示:
/root/topic1
/root/topic2
那么订阅/root/topic2的订阅者是不会接收到/root/topic1主题的消息,但是如果有发布者给/root主题发消息,则订阅topic1和topic2的订阅者都可以收到该消息.
不知道ActiveMQ中是否有这个机制,如果有, 后面这个分组的配置,可能就是为了避免这个问题.
2. Client - Server 方式:
这个是最有效的最快的通讯方式. 客户端可以通过TCP 或者SSL 协议来连接 Message Broker, 当然,可也支持NIO
(非阻塞IO) 或者 其他协议
We can load balance clients across brokers and provide broker failover so that we have a logical cluster of brokers with HA
. (这句话没能完全理解,直接贴出来)
C-S的使用方式, 在Broker进行如下配置:
我 写道
关于什么是HA ?
HA : High Availability. 高可用性的缩写
典型的方式就是持有多个服务器的实例(也就是Message Broker), 当一个连接失败的时候,你可以根绝 failover 的配置,快速连接到其他实例上(也就是其他Broker上), 这样可提供高可用性和resilience
TCP:
tcp://somehost:port
SSL:
ssl://somehost:port
我们也可是使用 Discorvery
的方式查找可用的Broker来无缝的链接到一个broker集群中.
3. Embedded Broker 内嵌 Broker 的方式:
这种方式与Client-Server方式类似,不同的是,客户端中内嵌了一个Broker. 这样可以使得客户端和Broker(服务器)的通讯在同一个JVM进行.这种方式不用使用真实的网络. 如果需要,可以让内嵌的Broker与网络上的Broker或者客户端进行链接并通讯.
This can avoid the extra hop required to go from producer to broker to
consumer - which is a great optimisation for RMI / RPC style situations,
where you want the performance benefits (reduced latency) of point to
point networking but with the scalabilty of a flexible messaging fabric. (这段话还是没能完全理解.)
Embedded Brokers 也可以简化部署. 他只需要一个较小的process需运行.
内嵌Broker的另一应用场景是隔离每一服务 , 可以使他们独立的进行消息存储和转发.这样可以使得远程Brokers 在出错死掉的情况下,也不影响内嵌Broker的运行. 如果整个网络都瘫痪了, 每个服务都可以使用自己身内嵌的Broker进行消息的发布.
你可以在这里找到 Embedded broker 的配置:
http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html
4. Peer to Peer 点对点 的方式:
5. JXTA
写道
后面两种方式,不是很理解,暂时不做翻译,以后搞明白了再不上
- 大小: 30.6 KB
分享到:
相关推荐
java中使用消息中间件ActiveMQ的MQTT协议发布消息使用fusesource,fusesource提供三种方式实现发布消息的方式,分别是阻塞式(BlockingConnection)、回调式(CallbackConnection)和Future样式(FutureConnection)
这是我精力整理的ActiveMQ发送和接收protobuf协议消息的实例。 也对ActiveMQ进行了简化封装,也配置了自动重连机制,亲测可用!
ActiveMQ允许客户端使用多种协议接收消息,其中WebSocket协议的URL使用ws://开头,默认端口号是61614
WebSocket协议接收ActiveMQWebSocket协议接收ActiveMQWebSocket协议接收ActiveMQWebSocket协议接收ActiveMQ
ActiveMQ的安装与使用ActiveMQ的安装与使用ActiveMQ的安装与使用
一份详细ActiveMQ的使用教程
go语言实现的读取、发送消息到activemq,使用的stomp协议。
spring整合使用activemq,代码主要是介绍如何使用spring整合使用activemq,可以直接拿过去使用
ACTIVEMQ实战部分翻译,只翻译了第一章到第四章的第三节
该demo主要用于activeMQ初学,队列消息监听和Topic消息监听
ActiveMQ In Action翻译笔记-更新版2011
赠送jar包:activemq-core-5.7.0.jar; 赠送原API文档:activemq-core-5.7.0-javadoc.jar; 赠送源代码:activemq-core-5.7.0-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
activeMq in action 使用activeMq开发JMS的简单讲述,activeMq in action 使用activeMq开发JMS的简单讲述
ActiveMQ 的安装与使用,ActiveMQ与spring整合,生产都、消费者、测试类等。
activemq消息测试工具
该文件包含ActiveMQ5.10服务包,并且包含一个交互实例,发送者先发送信息再接收信息,接收端先接收信息再发送信息
activemq 点对点 发布订阅 数据库方式集群 桥接等等,图形介绍。图形简洁,详细,明了。
springboot与activemq结合以及mq延迟demospringboot与activemq结合以及mq延迟demo
ActiveMQ相关jar包--使用Connection连接池,jar的版本很重要,请注意。