我们有一个问题,有时将/api/parameters/shovel/
设置为src-delete-after
的动态铲(通过HTTP API:queue-length
创建)完成,然后不删除,处于终止状态。
随后通过以下任何一种方法删除铁锹的尝试均未成功:
DELETE
发布到/api/parameters/shovel/
rabbitmqctl delete_shovel
rabbitmqctl clear_parameter -p <vhost> shovel <shovel_name>
铲子甚至没有出现在RabbitMQ管理界面的“铲子管理”部分。
我们唯一可以摆脱卡住的铁锹的方法是重新启动RabbitMQ。
还有其他人遇到这个问题吗?如果是这样,我们如何清除铲子而不必重新启动集群?另外,是否可以通过配置防止这种情况发生?
谢谢!
PS:
答案 0 :(得分:1)
您正在使用非常非常旧的RabbitMQ版本。请升级到最新版本(3.7.6
),并确保使用Erlang 20.3.X
(而非21
)。如果您仍然可以重现此问题,请在rabbitmq-users
邮件列表中进行报告。
答案 1 :(得分:0)
我们正在使用RMQ 3.7.13,Erlang 21.3.1。
一种可能出现问题的方式:
不能使用问题中提到的任何方法删除铲子。 我能够删除铲子的唯一方法是在集群中的所有3个节点上禁用铲子插件,然后重新启用每个节点上的每个插件,如下所示:
rabbitmq-plugins disable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel
rabbitmq-plugins enable rabbit_shovel_management
就恢复旧队列(偶然不碰任何东西...我称它们为“僵尸”队列)而言,这个问题大约每月发生一次,因此我创建了PostMan脚本来删除恢复的队列。多年来一直是一个问题。我们升级了RMQ,希望可以解决此问题……但事实并非如此。仲裁队列也许是一个更强大的解决方案?如果我有更多的时间进行研究/实验,我会的,但是我会更加重视自己的工作。