我设置了两个节点,A和B.两个节点都安装了RabbitMQ,并安装了联合插件。
从Web UI,我可以看到“联盟状态”> “状态”在A和B上“正在运行”。
在A上,我创建了一个名为“test1”的队列。
在B上,我可以看到“test1”队列(从A复制)。
在A上,我添加了一条消息。
但是,该消息未出现在B上的复制队列中 - 消息保留在A上。
这是我在A和B上使用的政策:
rabbitmqctl set_policy --apply-to exchanges my-queue "test1" \
'{"federation-upstream-set":"all"}'
所以,它是这样的:A(上游) - > B(下游)和B(上游) - > A(下游)
我是否应该看到复制到A和B的邮件?我错误配置了方向吗?
答案 0 :(得分:9)
但是,该消息未出现在B上的复制队列中 - 消息保留在A上。
参考文献:
联邦队列的"How it works"部分解释了:
"联合队列只会在本地消息用完时检索消息,消费者需要消息,而上游队列具有"备用"未被消费的消息......"
而"What does a federated exchange do?"解释了:
" ...发布到上游交易所的消息被复制到联邦交易所,好像它们直接发布到它..."
联合交换会复制邮件(max-hops
份),以便它们可用于冗余。
E.g。
这是我的数据,备份它。
联合交换会复制邮件(max-hops
份),因此只要您正确配置拓扑,它们就可用于跨区域分发内容(这也是冗余btw)。
E.g。
嘿大家,请申请这个安全补丁,你可以在离你最近的经纪人处找到。
联合队列可用于负载平衡:如果消息在上游可用且没有消费者可以处理它,则下游的免费消费者能够接收消息并对其进行处理。摇滚。
E.g。
我是一台电脑,我觉得无聊,我可以帮助你吗?你需要我做的任何工作吗?
联合交换+联合队列=您可以将同一组任务分发到多个区域(群集),每个群集中的一个工作人员可以执行该作业。
E.g。
本季度末,我需要每个区域(集群)的性能指标,每个商店经理(集群中的一个节点)将聚合指标(集群内部),我们将提供礼品卡到前3名。