0

我正在rabbit mq中创建铲子插件,可以在一个pod上正常工作,但是,我们在具有多个pod的Kubernetes集群上运行,并且在pod重新启动的情况下,它会在每个pod上独立创建多个shovel实例,这导致目标上的重复消息复制。

详细步骤如下

  1. 我们正在使用 helm chart 在 Kubernetes 集群上部署 rabbit mq。

  2. 之后,我们使用 Rabbit MQ 管理 UI 创建铲子。一旦我们从 UI 创建它,铲子就可以正常工作,并且不会在目的地多次复制数据。

  3. 当任何 pod 重新启动时,它都会创建单独的 shovel 实例。这开始导致来自不同铲子实例的目的地重复消息复制的问题。

  4. 当我们在 Rabbit MQ UI 上看到 shovel 状态时,我们发现每个 pod 上运行着同一个 shovel 的多个实例。

  5. 当我们从 Rabbit MQ UI 手动启动铲子时,它将解决这个问题,并且只有一次实例在 UI 中可见。

所以我们得出结论的问题是,在 pod 故障/重启的情况下,如果任何其他 shovel 已经在节点/pod 上运行,则 shovel 无法与其他节点/pod 同步。由于我们能够通过重新启动铲形 UI 来解决此问题,但这不是一种有效的生产方法。在排队和交换的情况下,我们不会遇到这个问题。

任何人都可以在这里帮助我们解决这个问题。

4

1 回答 1

0

正如我们最近看到的类似问题 - 这似乎是自 3.8 以来的一个问题。版本 - https://github.com/rabbitmq/rabbitmq-server/discussions/3154

据我了解,它应该从 3.8.20 版本开始修复。看

https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.19https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.20https://github。 com/rabbitmq/rabbitmq-server/releases/tag/v3.9.2

还没有时间检查这些版本是否真的解决了这个问题。

于 2022-01-12T14:55:50.230 回答