gpt4 book ai didi

RabbitMQ 从命令行创建队列和绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 17:46:35 26 4
gpt4 key购买 nike

如果我的机器上安装了 RabbitMQ,有没有办法在不使用客户端的情况下从命令行创建消息队列并将其绑定(bind)到某个交换?

我认为这是不可能的,但我想确定一下。

最佳答案

摘要:

其他答案是所要求答案的很好替代方案。以下是您可以从命令行使用的命令。

首先,做好所有必要的准备工作,例如安装rabbit、rabbitmqadmin 和rabbitctl。这个想法是使用来自rabbitmqctlrabbitmqadmin的命令。您可以看到一些命令示例:https://www.rabbitmq.com/management-cli.html

示例命令/设置:

以下命令应该可以满足您所需的大部分(如果不是全部):

# Get the cli and make it available to use.
wget http://127.0.0.1:15672/cli/rabbitmqadmin
chmod +x rabbitmqadmin
mv rabbitmqadmin /etc/rabbitmq

添加用户和权限

rabbitmqctl add_user testuser testpassword
rabbitmqctl set_user_tags testuser administrator
rabbitmqctl set_permissions -p / testuser ".*" ".*" ".*"

创建虚拟主机并设置权限

rabbitmqctl add_vhost Some_Virtual_Host
rabbitmqctl set_permissions -p Some_Virtual_Host guest ".*" ".*" ".*"

进行交流

./rabbitmqadmin declare exchange --vhost=Some_Virtual_Host name=some_exchange type=direct

排队

./rabbitmqadmin declare queue --vhost=Some_Virtual_Host name=some_outgoing_queue durable=true

进行绑定(bind)

./rabbitmqadmin --vhost="Some_Virtual_Host" declare binding source="some_exchange" destination_type="queue" destination="some_incoming_queue" routing_key="some_routing_key"

与 Python 绑定(bind)的替代方法

以下是命令行绑定(bind)的替代方案,因为我有时会遇到问题,并发现以下 python 代码更可靠。

#!/usr/bin/env python
import pika

rabbitmq_host = "127.0.0.1"
rabbitmq_port = 5672
rabbitmq_virtual_host = "Some_Virtual_Host"
rabbitmq_send_exchange = "some_exchange"
rabbitmq_rcv_exchange = "some_exchange"
rabbitmq_rcv_queue = "some_incoming_queue"
rabbitmq_rcv_key = "some_routing_key"

outgoingRoutingKeys = ["outgoing_routing_key"]
outgoingQueues = ["some_outgoing_queue "]

# The binding area
credentials = pika.PlainCredentials(rabbitmq_user, rabbitmq_password)
connection = pika.BlockingConnection(pika.ConnectionParameters(rabbitmq_host, rabbitmq_port, rabbitmq_virtual_host, credentials))
channel = connection.channel()
channel.queue_bind(exchange=rabbitmq_rcv_exchange, queue=rabbitmq_rcv_queue, routing_key=rabbitmq_rcv_key)

for index in range(len(outgoingRoutingKeys)):
channel.queue_bind(exchange=rabbitmq_send_exchange, queue=outgoingQueues[index], routing_key=outgoingRoutingKeys[index])

以上内容可以作为使用 python 的脚本的一部分运行。请注意,我将传出的内容放入数组中,这将允许您迭代它们。这应该会使部署变得容易。

最后的想法

我认为上述内容应该让您朝着正确的方向前进,如果任何特定命令没有意义,请使用谷歌,或者使用rabbitmqadmin help subcommands阅读更多内容。我尝试使用能够 self 解释的变量。

关于RabbitMQ 从命令行创建队列和绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com