原文可以参考这里: 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)
总之,使用WebSocket协议与ActiveMQ交互,可以实现低延迟、实时的消息传递,这对于需要实时数据同步的现代应用程序至关重要。正确配置和使用WebSocket连接,能够极大地提升应用的性能和用户体验。
以上就是使用ActiveMQ发送和接收protobuf协议消息的实例,以及如何进行封装和配置自动重连机制的基本步骤。通过这种方式,你可以构建高效、可靠的消息传递系统,充分利用protobuf的优势,并确保在网络不稳定时仍能...
这种网络结构支持多种拓扑结构,并且可以通过XML配置文件来调整,以满足不同的系统架构需求。 最后,ActiveMQ还提供了一些高级代理器特性和客户端选项,这些高级特性允许用户对消息代理进行更细粒度的控制,以适应...
WebSocket协议是一种在客户端和服务器之间建立长久连接的网络通信协议,它允许双方进行全双工通信,即数据...通过理解和掌握WebSocket协议以及如何在ActiveMQ中使用它,开发者能够构建出更强大、响应更快的分布式系统。
接下来我们将详细阐述ActiveMQ的安装与使用过程,包括安装前提条件、安装步骤、配置和启动以及安全配置等知识点。 首先,安装ActiveMQ之前需要有一个Java运行环境。这是因为ActiveMQ是使用Java开发的。JDK(Java ...
### ActiveMQ 使用手册知识点概述 #### 一、ActiveMQ 原理与基本构件 ...以上知识点全面覆盖了ActiveMQ的核心概念、配置细节、集群方式以及监控和使用注意事项等方面,帮助用户深入了解并高效使用ActiveMQ。
2. **JMS 使用 ActiveMQ 传送文件.doc** - 这个文档应该直接涵盖了如何使用ActiveMQ进行文件传输的具体步骤,可能包括了创建消息、设置目的地、发送和接收文件的代码示例,以及如何处理错误和异常的情况。...
此外,ActiveMQ还支持多种协议,如OpenWire、STOMP、AMQP、XMPP等,以及持久化、事务处理和网络集群等功能,提供了高可用性和可伸缩性。 总结一下,ActiveMQ 5.10是一个强大的消息中间件,通过`Publisher.java`和`...
通过这个"ActiveMQ初学使用demo",你将能够掌握ActiveMQ的基本操作,理解消息队列和主题的工作原理,以及如何在实际项目中使用它们。这将为你的分布式系统设计打下坚实的基础,帮助你有效地解耦系统组件,提高系统的...
在本文中,我们将深入探讨如何使用Go语言实现与ActiveMQ的通信,主要关注消息的收发功能。ActiveMQ是Apache软件基金会开发的一款开源消息中间件,支持多种协议,包括我们这里提到的STOMP(Simple Text Oriented ...
【ActiveMQ使用入门】 ActiveMQ是一款基于Java的消息中间件,它是Apache基金会的开源项目,也是最早的JMS(Java消息服务)实现之一。JMS是一种标准,定义了在Java环境中访问消息中间件的接口,但并未具体实现。...
**ActiveMQ 使用 SSL 加密文件 Demo** ActiveMQ 是一个开源的消息代理服务器,它遵循 Java Message Service(JMS)规范,提供了可靠的消息传递功能。在实际的生产环境中,为了确保消息传输的安全性,我们通常会使用...
### ActiveMQ 安装与使用...本文详细介绍了ActiveMQ的安装与使用过程,包括基本的安装步骤、防火墙配置、安全配置以及与Spring框架的整合方法。通过以上步骤,可以有效地部署和使用ActiveMQ来实现消息中间件的功能。
### Delphi ActiveMQ 使用帮助 #### 一、简介 Delphi ActiveMQ 使用帮助文档主要介绍了如何在 Delphi 开发环境中使用 HabariActiveMQClient 库与 Apache ActiveMQ 消息中间件进行交互的方法。这份文档提供了从安装...
ActiveMQ支持多种协议,包括OpenWire、AMQP、STOMP、MQTT和WebSockets,这使得它能与各种编程语言和框架无缝集成。 对于"activeMQ"这个压缩包,我们看到它特别指出是"免安装版",这意味着你可以直接解压并在任何...
Apache ActiveMQ是开源的、基于Java消息服务(JMS)的Message Broker,它允许应用程序通过...在下载的apache-activemq-5.10.0压缩包中,包含了完整的源码、文档、示例以及运行所需的配置文件,供开发者学习和调试使用。
在Java消息服务(JMS)领域,Apache ActiveMQ是一个广泛使用的开源消息代理,它提供了高效、可靠的异步通信能力。ActiveMQ允许应用程序通过创建连接、会话和消息生产者/消费者来交换消息。在这个场景中,我们将关注...
在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...