我使用网络连接器配置了两个代理 A 和 B。如果我使用独占使用者(单个使用者)或消息组(JMXgroupID),消息顺序是否保留?
在经纪人文档的网络中,我发现:
代理网络不会保留总消息排序。总排序适用于单个使用者,但网络桥引入第二个使用者。此外,网络桥接使用者通过 producer.send(..) 转发消息,因此它们从转发代理上的队列头转到目标上队列的尾部。如果单个使用者在联网代理之间移动,则如果所有消息始终跟随使用者,则总顺序可能会保留,但对于大型消息积压,这可能很难保证。
在单个经纪人中,可以通过独家消费者订购消息。如果我使用具有独家消费者的经纪人网络,会发生什么?
在代理网络中的总消息排序不起作用——即使您有一个消费者或多个消费者使用“独家消费者”功能。
考虑以下有2个代理的场景(让我们称这些为broder-A
producer-A
连接到broker-A
,将消息(message-1
)发送到队列-A
,然后断开连接producer-B
连接到broker-B
,将消息(message-2
)发送到队列-a
,然后断开连接producer-A
重新连接到broker-A
,向队列-A
发送消息(message-3
),然后断开连接consumer-A
连接到broker-A
并从队列-A
接收消息。即使消息是按顺序发送的,message-1
、message-2
、message-3
消费者实际上将按顺序接收消息,message-2
因为message-1
和message-3
,被发送到broker-A
message-2
被发送到broker-B
并且必须根据消费者需求通过经纪人网络移动到brokera
值得注意的是,经纪人网络的主要目标之一是可伸缩性。然而,为了保证消息按顺序使用,消息必须按顺序使用,这可能会大大降低性能,并且几乎肯定会抵消代理网络提供的任何可伸缩性收益。总消息排序和经纪人网络是根本对立的想法。如果你真的想要完全的消息订购,你不应该使用经纪人网络。
我们需要将消息从一个ActiveMQ代理复制到另一个代理。这里消息必须只是复制,并且消息应该存在于两个代理中。 我可以想到一个自定义应用程序,它订阅某个目标并读取该消息并将消息重新发布到多个代理中的目标。 我没有权限在经纪人中进行更改,所以我想不出经纪人网络选项。 是否有任何最佳实践或工具可用于将A-MQ消息从一个代理复制到另一个代理?
我有两个 ActiveMQ 代理(A 和 B),它们被配置为存储转发网络。当代理 B 上连接了使用者并且创建者将消息发送到 A 时,它们可以完美地将消息从 A 转发到 B。问题在于,当使用者被杀死并重新连接到 A 时,B 上排队的消息(它们是从 A 转发的)不会转发回使用者连接到的 A。即使我向 B 发送新消息,所有消息都卡在 B 上,直到我重新启动代理。我尝试在代理网络连接器上设置网络TTL=“
我们设置了一个中心辐射型拓扑,其中包含两个用于冗余的集线器。连接到网络的所有节点都具有到两个集线器的静态网络连接。 如果我们为另一个辐条产生的特定主题提供一个消费者,然后放弃其中一个集线器,有时消费者会停止获取数据。如果关闭hub A导致消费者停止接收数据,则进行备份将恢复消费者的订阅源。降低B对饲料没有影响。哪个枢纽可能影响消费者,这似乎是不一致的。 我们期望,对于代理网络,只要生产者在网络上并
我在完整图形拓扑上有一个代理网络,在不同服务器上有3个节点:A,B和C。每个代理都附加了一个生产者,并且出于测试目的,在代理 C 上只有一个非代理使用者。由于我使用的是完整图拓扑,因此每个代理还为其他每个节点都有一个代理使用者。 问题是:A收到一些消息。我希望它将这些消息转发给代理C,该代理连接了一个“真实”消费者。这不会发生,代理A存储这些消息,直到一个“真实”消费者连接到它。 我的配置(或理解
我在同一台机器上有两个应用程序实例(尽管它也可能在不同的机器上),两个Tomcat实例具有不同的端口,Apache ActiveMQ嵌入到应用程序中。 我已经配置了一个静态代理网络,这样来自一个实例的消息也可以被所有其他实例使用(每个实例可以是生产者和消费者)。 servlet: 配置: 发布者: 消费者: JNDI:activemq-jndi.properties ActiveMQStartup
我试图在activemq中设置一个代理网络,我目前的设置是让两个代理分别运行在不同的vm上。我的配置是: 当我在代理1上启动activemq时出现此错误: 我在broker2 activemq.xml中设置activemq用户,如下所示: 用户Activemq在credentials-enc.properties文件中定义如下: 为什么经纪商 1 能够与经纪商 2 建立联系?我在这里错过了什么?