当前位置: 首页 > 知识库问答 >
问题:

活跃的MQ经纪人网络存储和转发

云德辉
2023-03-14

我是使用ActiveMQ的新手,正在试图理解经纪人网络是如何工作的。我已经阅读了activemq文档,并浏览了互联网上的一些文章,如http://www . jakubkorab . net/2011/11/understanding-ActiveMQ-broker-networks . html

我在本地Windows桌面上设置了以下内容。有2台tomcat服务器分别运行在8080和9080上,其中包含一个包含活动mq的Web应用程序。Web应用程序在启动时启动一个代理,因此当两台服务器都启动时,我有以下2个代理

经纪人A:运行在61616上经纪人B:运行在61617上

代理 A 的网络连接器设置为与代理 B 的连接,并且代理 B 具有与代理 A 的网络连接,这两个连接器都具有默认配置

我观察到以下行为

  1. 当我连接到服务器 A 上的 Web 应用程序时,发布消息,在服务器 B 上的 Web 应用程序上启动使用者并尝试接收消息时,我收到该消息,并从代理 A 和 B 中删除。我随后尝试使用 receiveSelected 获取消息进行测试,但我没有获得任何数据
  2. 当我连接到服务器 A 上的 Web 应用程序时,发布消息,在服务器 A 上的 Web 应用程序上启动使用者并尝试接收消息,我收到消息并将其从代理 A 和 B 中删除。

我的问题是,在什么时候,消息会从两个代理的商店中删除 - 只有在消费者请求消息并确认消息之后,我才会删除消息?这是否意味着在发布消息时,消息位于两个代理的本地存储上?

共有1个答案

刘丰羽
2023-03-14

确认使用的消息后,将从存储中删除消息。此外,在代理网络中,代理像普通客户端一样使用来自彼此的消息,只是它们要等到有足够的消息等于连接的预取大小的75%时,才能发送确认(这个百分比是可配置的,预取大小也是可配置的)。

由于缺省预取为 1000,这意味着 750 条消息需要通过网桥(两个代理之间的网络连接)并由另一个下游客户端确认,然后一个代理将消息确认回另一个代理,此时原始生产代理可以从持久性存储中删除这些消息。

以这种方式,消息在网络中一次只能由一个代理“onwed”。

在发布时,发布者会立即收到与其连接的代理的响应。请注意,响应可能会延迟,直到消息在磁盘上持久化,也可能不会——这取决于几个因素,包括目的地的类型(队列对主题对临时目的地)、消息的持久化模式(持久化对非持久化)、会话的事务处理模式等等。直接回答这个问题,如果消息被同步持久化到磁盘,那么只有在send()或commit()调用完成后,消息才能保证位于直接服务于该客户机的代理的持久存储中。

代理之间以及客户端和代理之间有很多交互,这些交互是异步执行的,而很多交互是同步执行的。消息的生成在本地代理上满足 JMS 保证:send() 和 commit() 调用在客户端和代理之间是同步的,并且仅在满足保证时才完成。确认是异步的;客户端始终需要为在连接丢失或代理中断的情况下重新传递消息做好准备(当您考虑客户端和服务器之间的事件序列时,这无法完全消除)。由连接丢失引起的失败的 sends() 和 commits() 可能会导致消息丢失或存储的消息(再次,不完全解决) - 因此,客户端需要再次准备处理重复项。

 类似资料:
  • 我有两个 ActiveMQ 代理(A 和 B),它们被配置为存储转发网络。当代理 B 上连接了使用者并且创建者将消息发送到 A 时,它们可以完美地将消息从 A 转发到 B。问题在于,当使用者被杀死并重新连接到 A 时,B 上排队的消息(它们是从 A 转发的)不会转发回使用者连接到的 A。即使我向 B 发送新消息,所有消息都卡在 B 上,直到我重新启动代理。我尝试在代理网络连接器上设置网络TTL=“

  • 长时间侦听者,堆栈溢出:)上的首次调用者 我有一个具有生产者和消费者的ActiveMQ代理。创建器正在连接到活动 MQ 代理。有一个使用者附加到同一个代理。当我使用此设置发送消息 P - 现在我添加另一个代理来创建代理网络,并使用以下配置发送消息:P- 附加信息: P和B1在同一个数据中心,DC1。 B2 和 C 位于同一数据中心 DC2 中。 DC1和DC2是同一海岸上的两个不同数据中心,pin

  • 我们正在运行活动 MQ 5.6.0。在我们的测试环境中,我们有 3 个代理在静态网络中运行。下面是当前方案。我们有6个消费者随机连接到3个经纪人。一个经纪人有3个消费者,第二个有2个,第三个有1个。当我们向队列堆积消息时,我们看到消息积压在第三个代理上,有 1 个使用者,另外两个代理没有获得任何积压,其余 5 个使用者处于空闲状态。 在下面,您将找到我们所有一个代理(dev.queue01)的配置

  • 4.留存活跃 一、留存活跃 留存可以用作评价用户使用产品的粘性,是非常重要的一个指标。及策提供新增留存和活跃两种评估角度。 二、功能介绍 留存: 可查看今日之前某渠道、推广活动分日、周、月查看1日留存、2日留存……7日留存、14日留存、30日留存占比以及留存激活设备数; 数据导出:根据所选时间范围,CSV格式,命名方式为:留存数据 活跃: 可查看今日之前某渠道、推广活动DAU、MAU; 数据导出:

  • 本文向大家介绍存储区域网络(SAN)和网络附加存储(NAS)之间的区别,包括了存储区域网络(SAN)和网络附加存储(NAS)之间的区别的使用技巧和注意事项,需要的朋友参考一下 存储区域网络(SAN) 存储区域网络(SAN)用于使用光纤通道和交换机在服务器和存储设备之间传输数据。数据由磁盘块表示。SAN使用SCSI,SATA协议。以下是SAN的重要组件。 节点端口 电缆线 集线器,交换机,导向器作为

  • Kubernetes 网络与存储 王渊命 @jolestar Agenda Kubernetes 的网络 Kubernetes 网络概述 Kubernetes 的 ClusterIP 机制 Kubernetes 的网络规范 CNI 容器的跨主机网络 Kubernetes 的网络,以 Flannel 为例 QingCloud SDN Passthrough Kubernetes 网络故障排查 Kub