rabbitmq - 如何从 RabbitMQ 集群中删除非运行节点

标签 rabbitmq

我需要通过命令行删除 RabbitMQ 集群中未运行的所有节点。

我尝试过rabbitmqctlforget_cluster_node,但我不确定如何获取非运行节点的列表。

我在rabbitmqctl cluster_status 的输出中看到了所有节点和running_nodes。有人可以帮我解析它并让我知道是否有其他解决方案可以轻松地从集群中删除节点?

最佳答案

我自己想出来的

# Remove nodes that are not running from the cluster
nodes=($(egrep -o '[a-z0-9@-]+' <<< $(sudo rabbitmqctl cluster_status --formatter json | jq .nodes.disc)))
running_nodes=($(egrep -o '[a-z0-9@-]+' <<< $(sudo rabbitmqctl cluster_status --formatter json | jq .running_nodes)))

for node in ${nodes[@]}
do
  match_count=0
  for rnode in ${running_nodes[@]}
  do
    if [ "${node}" == "${rnode}" ]
    then
        match_count=1
        break
    fi
  done
  if [ $match_count == 1 ]
    then
        continue
    else
      sudo rabbitmqctl forget_cluster_node $node
    fi
done

关于rabbitmq - 如何从 RabbitMQ 集群中删除非运行节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052924/

相关文章:

java - 即使一个 bean 在运行时出现错误,也确保 Spring 应用程序的其余部分运行

python - 运行消息队列的 python 消费者的最佳实践?

java - Spring RabbitMQ 监听器返回一个以逗号分隔的 ASCII 小数字符串

node.js - RabbitMQ NACK 消息

Spring RabbitListner 使用注释语法停止监听队列

python - 在 Pika/RabbitMQ 的 consumer_callback 中确认消息

python - 如何连接到rabbitMQ docker容器?

java - 连接被拒绝 : RabbitMQ

python - 如何使用 Pyspark Streaming 模块实现 RabbitMQ 消费者?

java - 如何将 JSON 字段的各种可能类型映射到 POJO 属性?