美文网首页
【rabbitMQ】rabbitmqctl手动添加、删除、清理队

【rabbitMQ】rabbitmqctl手动添加、删除、清理队

作者: Bogon | 来源:发表于2024-08-23 12:10 被阅读0次

如何使用rabbitmqctl手动添加队列 ?

要使用rabbitmqctl手动添加队列,您可以使用以下命令:

rabbitmqctl -n <vhost_name> declare queue name=<queue_name> durable=<boolean> auto_delete=<boolean> arguments=<arguments>

其中:

  • <vhost_name> 是虚拟主机的名称。

  • <queue_name> 是队列的名称。

  • <boolean> 是一个布尔值,表示队列是否应该是持久的(true)或暂时的(false)。

  • <boolean> 是一个布尔值,表示当不再有消费者连接到队列时,是否应该自动删除队列。

  • <arguments> 是一个键值对,表示队列的其他参数,例如:{x-message-ttl, 60000} 表示消息存活时间为60秒。

例如,要创建一个名为“my_queue”的持久队列,不自动删除,消息存活时间为60秒,可以使用以下命令:

rabbitmqctl -n / declare queue name=my_queue durable=true auto_delete=false arguments="{x-message-ttl, 60000}"

确保您有足够的权限来执行这些命令,并且RabbitMQ服务正在运行。

如何使用rabbitmqctl手动输出队列 ?

要使用rabbitmqctl删除RabbitMQ中的队列,可以使用以下命令:

rabbitmqctl delete_queue <queue_name>

这里 <queue_name> 是你想要删除的队列的名称。

如果你想要删除一个持久化的队列,你需要添加--force选项,因为默认情况下不能删除有消费者正在使用的持久化队列。

rabbitmqctl delete_queue --force <queue_name>

如果你想要删除多个队列,可以多次运行这个命令,或者使用通配符删除多个匹配的队列:

rabbitmqctl delete_queue 'my-queue-*'

这将删除所有以my-queue-开头的队列。

RabbitMQ没有提供批量删除queue的命令或功能,但是有提供列出所有队列名称以及删除单个queue的功能。
我们可以借助Linux的xargs命令来批量删除指定的queue:

//删除以hello开头的queue
rabbitmqctl list_queues| grep ^hello | awk '{print $1}' | xargs -n1 rabbitmqctl delete_queue

请确保在运行这些命令之前已经登录到RabbitMQ服务器,并且有足够的权限执行删除操作。

在RabbitMQ中,执行队列相关操作时,是否需要指定vhost取决于你的具体需求和配置。

RabbitMQ支持虚拟主机(vhost)的概念,每个vhost本质上是一个独立的RabbitMQ服务器实例,拥有自己的队列、交换器和绑定等。
默认情况下,RabbitMQ会提供一个名为"/"的vhost。如果你在使用默认vhost,那么在执行队列操作时可能不需要显式指定vhost。

然而,如果你的RabbitMQ实例中配置了多个vhost,并且你想要在特定的vhost下执行队列操作(如创建、删除队列等),那么你就需要在执行命令时指定vhost。这通常通过在命令中添加-v或--vhost参数来实现,具体取决于你使用的RabbitMQ版本和命令行工具的语法。

因此,是否需要指定vhost取决于你的RabbitMQ配置和你想要操作的目标vhost。

如何 使用 rabbitmqctl 命令行工具可以手动 purge 队列?

rabbitmqctl purge_queue  -p /    <queue_name>

如果使用 rabbitmqctl list_queues 需要列出队列更详细的信息 ,并格式化输出 ?

rabbitmqctl list_queues name messages messages_ready messages_unacknowledged  -p / | grep -v  "Listing queues ..." | awk '{ printf "%-60s %-10s %-10s %-10s\n", $1, $2, $3, $4 }'

rabbitmqctl list_queues 如何输出队列有堆积的队列,输出堆积数前10的队列 ?

rabbitmqctl list_queues name messages messages_ready messages_unacknowledged   -p / | grep -v  "Listing queues ..." |awk '$2>0' | sort -k2 -nr | head -n 10 | awk '{ printf "%-60s %-10s\n", $1, $2 }'

此命令的作用如下:

  • rabbitmqctl list_queues name messages messages_ready messages_unacknowledged 列出队列的名称,消息总数,就绪消息数和未确认消息数。
  • awk '$2>0' 过滤出消息总数大于0的队列。
  • sort -k2 -nr 根据消息总数对队列进行排序,按照从大到小的顺序进行排序。
  • head -n 10 取出前10个队列。

此命令将输出堆积数前10的队列的名称和消息总数。您可以根据需要调整输出格式。

相关文章

网友评论

      本文标题:【rabbitMQ】rabbitmqctl手动添加、删除、清理队

      本文链接:https://www.haomeiwen.com/subject/rxvfldtx.html