问题标签 [rabbitmq-federation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
23051 浏览

rabbitmq - 何时使用 RabbitMQ 铲子以及何时使用联邦插件?

对于我工作的公司,我们希望使用 RabbitMQ 作为我们的主要消息总线。我们的想法是,每个应用程序都使用自己的虚拟主机进行内部通信,并且通过铲子或联合插件,我们可以在多个虚拟主机之间共享某种类型的事件(甚至可能是多台机器(非集群)) . 我们为每个虚拟主机选择应用程序,以将内部通信与公共事件分开,并保持每个应用程序的安全性可调。

根据RabbitMQ网站上发布的信息,当我必须选择铲子或必须选择联邦插件时,我不明白。

RabbitMQ 有以下解释何时使用什么:

通常,当您需要比联邦提供的更多控制权时,您会使用铲子通过 Internet 链接代理。

我选择联邦时缺少的铲子细粒控制是什么?

目前我想我更喜欢联邦插件,因为我可以通过联邦插件提供的 REST API 自动化虚拟主机间通信。在铲子的情况下,每次我们想在虚拟主机之间共享事件时,我都需要更改铲子配置并重新启动 RabbitMQ 实例。我的想法对吗?

我们目前在 Windows 上运行 RMQ,客户端从 .NET 连接。在不久的将来,Java/Perl/PHP 客户端将加入。

总结我的问题:


  • 选择联邦时缺少的铲子细粒控制是什么?
  • 当我使用铲子时更改虚拟主机间通信的唯一方法是更改​​配置文件并重新启动实例是否正确?
  • 设置(每个应用程序的虚拟主机)是否有意义或者我完全错过了这一点?
0 投票
2 回答
2012 浏览

python - RabbitMQ:双向联合代理,如何让所有队列弹出消息?

我有两个使用联合插件配置 [1] 的代理。两者都指向对方作为上游。

我的测试是:

  • 在代理 A 上发布消息
  • 在经纪人 B 上消费

结果是:

  • 在经纪人 B 上消费作品
  • <good> broker B 上的队列弹出消息
  • <不好> broker A 上的队列还有消息
    • <这不好的原因> 我看到的问题是:如果我总是在一个代理上发布,然后总是在另一个代理上消费 --> 那么发布代理上的队列将增长直到它满了并开始丢弃消息。

我想要的结果是:

  • 当消费者在代理 B 上消费时,代理 A 和 B 上的两个队列都会弹出消息

当消费者在代理 B 上消费消息时,如何配置 RabbitMQ 以从所有队列中弹出消息?现在我正在尝试使用 RabbitMQ Federation 插件来做到这一点。


[1] 这两个代理作为上游相互指向,我按照文档给出的“简单示例”中描述的相同方式配置它们,除了有两个代理作为上游相互指向。发布者的代码看起来像这样,消费者的代码看起来像这样。

0 投票
0 回答
263 浏览

rabbitmq - 联合队列未出现在下游节点/服务器中

我正在尝试在两台机器上使用联合队列联合消息。但我无法看到联合队列在下游服务器中自动创建。比方说,我有两台服务器 A(上游)和 B(下游)。我正确配置并安装了联邦插件并使用了策略,

并添加上游,

之后,我将一条消息发布到 Queue("Test_Queue") 到 A 服务器,但“Test_Queue”应该自动在 B 服务器中创建,对吗?但它没有发生。

任何帮助,将不胜感激。

谢谢你。

0 投票
0 回答
110 浏览

rabbitmq - 我可以使用 rabbitmq 在 WAN 上实现一致性和分区容错吗

RabbitMQ 为分布式系统提供了两种选择——Federation 和/或 shovel,它们有利于可用性(AP)而不是一致性(CP)(以及在 WAN 上工作);集群支持一致性 (CP) 而不是可用性 (AP)(但不适用于 WAN)。

有什么方法可以设置 RabbitMQ 和插件以支持 CP 并允许通过 WAN 进行镜像?

0 投票
0 回答
37 浏览

rabbitmq - 如何在 RabbitMQ 中的虚拟主机上设置 no-ack?

我使用联邦插件的服务器有 4 个虚拟通道,每个设置为 10 个预取。当 10 条消息未被确认时,服务器被卡住。

如何将 no-ack 设置为虚拟主机?

0 投票
1 回答
1960 浏览

rabbitmq - RabbitMQ - 联合队列与交换联合

我已经建立了一个兔子集群,每次数据库发生变化时,我都会将消息发布到扇出交换中。

我为我的一些使用这些更新的微服务绑定了专用队列,并且我最初还为外部客户端设置了一个专用队列,以便他们可以将其与自己的兔子基础设施联合起来,并使用每条消息的副本。

现在我想知道是否允许交换联合而不是为每个新的外部消费者创建一个新的专用队列会是一个更好的方法,因为越来越多的用户会来。

优缺点都有什么?

谢谢

0 投票
0 回答
60 浏览

rabbitmq - rabbitmq 联合交换可扩展性

是否可以使用 rabbitmq 联合交换来实现可伸缩性,如下所述:

消息将由应用程序在负载均衡器后面工作的多个上游交换机上发布。这些发布到上游交易所的消息将被发送到联合交易所,消费者可以从那里消费这些消息。

通过这一点,我希望发布应用程序可以在需要时通过添加上游交换来扩展。期待这是否现实可行?

此外,如果上述可能,是否可以将 spring amqp 配置为连接到这些上游交换,spring 只知道负载均衡器的地址而不是单个上游交换。

0 投票
2 回答
829 浏览

rabbitmq - 如何使用rabbitmq HTTP调用获取rabbitmq联合链接状态

有人知道如何使用 RabbitMQ 的 HTTP API 获取联合链接的状态吗?我可以通过以下示例获取上游联合的定义,但找不到获取其状态的方法。

呼叫 - http://[hostname]:15672/api/parameters/federation-upstream返回我

[{"value":{"uri":["amqp://USER:PASSWORD@HOSTNAME:4003/VHOST"],"trust-user-id":false,"exchange":"anurag.fed"}, "vhost":"VHOST","component":"federation-upstream","name":"upstream-fed"}]

官方文档说,可以通过rabbitmqctl或者GUI来监控链接状态,但是没有在任何地方提到HTTP apis。这是否意味着rabbitmq在API中没有这个能力?如果有人可以帮忙吗?

https://www.rabbitmq.com/federation-reference.html “您可以使用 rabbitmqctl 和管理插件监控联合链接的状态。”

正在使用的 RabbitMQ 版本:3.6.8

谢谢,阿努拉格

0 投票
0 回答
368 浏览

rabbitmq - 为什么发布时 RabbitMQ 超时(使用交换联合)?

关于背景信息,我们是一家拥有 200 多家商店的零售商公司。我们使用 rabbitmq 联合 200 多个 RabbitMQ 服务器(每个商店一个服务器)。每个 RabbitMQ 服务器有 4 个交换器。所以总共有大约800个交易所。

有一个发布消息的中央服务器。这用作其他 200 台服务器的上游服务器。当产品发生变化时,会向中央服务器发送一条消息,该消息将转发到其他rabbitmq服务器并在每个商店本地处理。我们的应用程序在 Windows 服务器上的 .NET 框架上运行(使用 Masstransit 处理 RabbitMQ)。

有时,我们在向 rabbitMQ 发布事件时会遇到超时错误。这是一个例子:

每条消息大约 5000 字节。我们想了解消息是如何超时的。我们在 rabbitMQ 网站上发现了这个关于 ack 行为的信息:

For routable messages, the basic.ack is sent when a message has been accepted by all the queues. For persistent messages routed to durable queues, this means persisting to disk. For mirrored queues, this means that all mirrors have accepted the message. https://www.rabbitmq.com/confirms.html#when-publishes-are-confirmed

但是,我们找不到任何有关在联合中发布确认行为的信息。所以我们的问题是

  1. 在交换联合中,当所有下游服务器都收到消息或上游服务器将消息持久化到磁盘时,代理会发送发布确认?
  2. 如何解决超时错误?

任何帮助,将不胜感激。

0 投票
2 回答
1927 浏览

rabbitmq - 如何配置 RabbitMQ 铲子?

我在不同的数据中心有 2 个 RabbitMQ 集群。此时我需要将其中一个交换从一只兔子铲到另一只兔子。我怎样才能实现它?