`
netcomm
  • 浏览: 142035 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

activeMQ指南针_forwarding bridge的实现机制、使用说明

阅读更多

                                                                                                                        图一

陆续有朋友和我们进行联系,很多朋友都提了不错的建议,但目前提出加入我们分析的人员不多,希望我们帮助的案例还不多,我就选择其中一个做为切入点,希望能帮到相关的朋友,同时也做为指南针计划的开篇。

问题描述:我们想通过forwarding bridge方式联起来多个activeMQ(也就是Broker),但是消息消费者client3接收不到消息。(因该朋友对问题的描述不够详细,我们暂且这么设定问题。希望以后各位提问题最好带上图一所示的消息拓扑图)

下面我将结合图一所示的消息拓扑图,结合我们分析activeMQ源码,来具体说一下forwarding bridge的工作方式和使用时应注意的地方。

Forwarding bridge是多个activeMQ的一起工作的一种工作方式,如图所示,A brokerB broker作为它的消息forward的下一站,我们也可以把它理解为消息转发。

首先描述forwarding的初始化过程,A broker启动的时候,会主动寻找B broker,直到和B broker建立链接,B会在和A建立链接的过程中把它的一些重要参数告诉A,其中最重要的就是B保持的消息消费者列表,它会送给A,当A收到这些消费者列表后,会把它们当成自己的消费者一样对待,没有区别。这之后消息消费者就可以消费A收到的消息。

场景1描述:

client3链接在B broker上,当client3关闭后,A还是会向B发送符合要求的消息。这就导致,如果B停止,A重现启动,并链接上client1client2,发现没有任何消息可以给它们消费,但其实B上还有没被client3消费的消息。

             场景分析:开始我们还认为这是5.1版本的一个bug,但在研究代码后,发现它是这么处理的,关键代码是如果client3是持久的或其目的是个Queue,并且该Queue不是临时的,activeMQ就把该消息消费者的consumerId给替换了,用新的代替。这样之后,当client3关闭后,BA发送删除消费者的命令,但此命令中的consumerIdclient3原来的,A当然没法删除该消费者。这就导致client3关闭后,A还是会把符合要求的消息发送给B。我们认为activeMQ这么设计的用意在于,可能在于效率等方面的考虑。那么我们又引出了另外一个问题,那什么时候client3会真正从A broker中删除呢?答案是要么A停止,要不B停止。

       场景2描述:

              链路都正常,但是在C broker上的client4没法收到A上符合要求的消息,这时候,需要看看brokernetworkTTL的设置,默认是1

  • 大小: 26.7 KB
分享到:
评论

相关推荐

    activemq_activemq_doublezoo_源码

    总的来说,"activemq_activemq_doublezoo_源码"涵盖了ActiveMQ的核心功能和它在实际开发中的应用,特别是与Spring框架的集成,这对于理解如何在实际项目中部署和使用ActiveMQ是非常有价值的。通过深入研究源码,...

    Spring-ActiveMQ.rar_Spring Activemq_activemq_activemq spring

    ActiveMQ是Apache软件基金会的一个开源项目,它是Java消息服务(JMS)的一个实现,广泛应用于企业级应用中。而Spring框架,作为一个Java平台的全功能模块化解决方案,提供了与ActiveMQ集成的能力,让开发者能够轻松...

    ActiveMQ_in_Action_中文

    ActiveMQ是Apache软件基金会旗下的一个开源消息中间件,它实现了Java消息服务(JMS)规范,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。JMS规范定义了一套API,用于在两个应用程序之间或者...

    activemq-jmdns_1.0-4.1.2.jar.zip

    在"activemq-jmdns_1.0-4.1.2.jar"中,ActiveMQ的JMDNS实现可能包含了实现多播DNS服务发现所需的所有类和资源,使得ActiveMQ可以在本地网络中利用JMDNS功能,如动态注册和发现其他ActiveMQ节点或服务。 "license....

    activeMQ_spring_Demo.zip_DEMO_activemq_activemq spring_rowbv3

    ActiveMQ作为Apache基金会的一个开源项目,是Java消息服务(JMS)的一个实现,而Spring框架则广泛应用于Java后端开发,提供了一整套的轻量级容器服务。本教程将重点讲解如何将ActiveMQ与Spring进行整合,以创建一个...

    activemq-jmdns_1.0-5.4.0-sources.jar

    标签:activemq-jmdns_1.0-5.4.0-sources.jar,activemq,jmdns_1.0,5.4.0,sources,jar包下载,依赖包

    activemq-jmdns_1.0-5.4.0-javadoc.jar

    标签:activemq-jmdns_1.0-5.4.0-javadoc.jar,activemq,jmdns_1.0,5.4.0,javadoc,jar包下载,依赖包

    apache-activemq-5.0.0-src.zip_ActiveMQ 源代码_activemq_activemq.src

    5. **安全机制**:ActiveMQ提供了用户认证和授权功能,源代码里有相关的安全策略和权限控制实现。 6. **开发文档与示例**:描述中提到的“开发想到和开发例子”可能包括API文档、设计文档以及一些示例程序,帮助...

    message_system_test_report.rar_ActiveMQ java_activemq_httpsqs_me

    在IT行业中,消息队列(Message Queue)是用于在分布式系统中解耦组件、提高处理效率和实现异步通信的关键技术。本测试报告涉及到多个消息队列服务的安装部署及性能测试,包括ActiveMQ、HTTPSQS、Kestrel和MemcacheQ...

    activemq-cpp-library-3.6.0-src.tar.gz_C# ActiveMQ_activemq_activ

    ActiveMQ-CPP库是ActiveMQ的C++实现,它提供了一套完整的API,使开发者能够在C++应用程序中轻松地集成ActiveMQ的功能。这个库的3.6.0版本包含了丰富的功能,如连接管理、会话创建、消息生产与消费等,为开发者提供了...

    ActiveMQ实践入门指南_ActiveMQ实践入门指南_源码

    本指南将带你逐步了解如何开始使用ActiveMQ,并深入探讨其核心功能和实践应用。 一、ActiveMQ简介 ActiveMQ是Apache软件基金会的一个项目,它遵循JMS规范,支持多种协议,包括OpenWire、STOMP、AMQP、MQTT和WS-...

    lwl-activemq.zip_activemq_collect6i1

    在本压缩包"lwl-activemq.zip_activemq_collect6i1"中,包含了与ActiveMQ相关的源码以及启动和配置信息,特别是针对"collect6i1"的集成。以下将详细解析这些关键知识点。 1. **ActiveMQ消息发送源码**: ActiveMQ...

    activemq-jmdns_1.0-5.5.0.jar.zip

    本文将深入探讨与"activemq-jmdns_1.0-5.5.0.jar.zip"相关的知识点,包括ActiveMQ的特性、JMDNS(Java Multicast DNS)的功能,以及如何在项目中使用这两个组件。 首先,让我们关注ActiveMQ。ActiveMQ是Apache软件...

    activemq-jmdns_1.0-4.1.2.jar

    标签:activemq-jmdns_1.0-4.1.2.jar,activemq,jmdns_1.0,4.1.2,jar包下载,依赖包

    activemq-jmdns_1.0-5.5.1.jar

    标签:activemq-jmdns_1.0-5.5.1.jar,activemq,jmdns_1.0,5.5.1,jar包下载,依赖包

    activemq-jmdns_1.0-5.3.2.jar

    标签:activemq-jmdns_1.0-5.3.2.jar,activemq,jmdns_1.0,5.3.2,jar包下载,依赖包

    activemq-jmdns_1.0-5.4.1.jar

    标签:activemq-jmdns_1.0-5.4.1.jar,activemq,jmdns_1.0,5.4.1,jar包下载,依赖包

    activemq-jmdns_1.0-5.4.0.jar

    标签:activemq-jmdns_1.0-5.4.0.jar,activemq,jmdns_1.0,5.4.0,jar包下载,依赖包

Global site tag (gtag.js) - Google Analytics