RabbitMQ从命令行创build队列和绑定

如果我在我的机器上安装了RabbitMQ,是否有办法从命令行创build消息队列,并将其绑定到某个交换机而不使用客户机?

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

安装RabbitMQpipe理插件 。 它带有一个命令行工具,你可以使用它来configuration所有的队列/交换等。

概要:

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

首先,做所有必要的准备工作,例如安装rabbit, rabbitmqadminrabbitctl 。 这个想法是使用来自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 # I know, don't use 777... but it keeps the example simple... chmod 777 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 

做一个绑定

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

用Python绑定的另一种方法

以下是命令行绑定的替代方法,因为我有时会遇到问题,并发现下面的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 。 我试图使用自己解释的variables。 祝你好运 :)

rabbitmqctl,提供的命令行界面不公开创build队列并绑定它的能力。

然而,尽pipe使用快速脚本来做这件事是相当简单的,而且兔子mq入门指南也展示了几个例子,无论是出版商还是消费者。

 #do some work to connect #do some work to open a channel channel.queue_declare(queue='helloworld') 

我正在关注连接,但它是一个字面上创build一个队列。 该操作也是幂等的,这意味着您可以将该语句包含在脚本中,并且知道它不会继续重新创build队列或者删除现有名称。

如果您使用Linux Debian,则有一个名为“amqp-tools”的软件包。 安装它

 apt-get install amqp-tools 

然后可以使用命令行(如amqp-publish)将消息发送到队列

 amqp-publish -e exchange_name -b "your message" 

然后你可以使用从队列中收集消息

 amqp-get -q queue_name 

要么

 amqp-consume -q queue_name 

还有(命令行) rabbitmq-c包/库的例子。 在你build立之后,你可以通过命令行发送消息,比如

 amqp_sendstring localhost 5672 amq.direct test "hello world" 

玩的开心 …

在Windows上从CLIdynamic创buildRabbitMq Exchange,队列和绑定

我已经安装了一个RabbitMQ服务器,并运行多个队列和交换,现在想要从命令行实时创build它。 我知道这是一个古老的问题,但我认为给出这些信息将是有益的。

以下是我所做的:

build立

  1. 下载并安装Python 2.6.6-201008-24 Windows x86-64 MSI安装程序,任何版本的Python大于2.X但不是3.X
  2. 下载RabbitMqAdmin:RabbitMq Web用户界面有一个链接命令行,导航到http:// server-name:15672 / cli / (server-name:安装rabbitmq的服务器),使用上面的url并保存为rabbitmqadmin.exe在python exe位置

例如:C:\ Python26 \ C:\ Python26 \ python C:\ Python26 \ rabbitmqadmin.exe

代码:在一个batch file中使用了下面的命令

  1. 创build交换:

    c:\ python26 \ python.exe rabbitmqadmin.exe声明交换名称= ExchangeName1 type = topic持久= true

  2. 创build队列:

    c:\ python26 \ python.exe rabbitmqadmin.exe声明队列名称= NameofQueue1 durable = true

  3. 创build绑定:

    c:\ python26 \ python.exe rabbitmqadmin.exe声明绑定源= ExchangeName1目的地types=队列目的地= NameofQueue1 routing_key = RoutingKey1

通过执行rabbitmqadmin.exe -help -subcommands它会列出所有可用的命令

例如:c:\ python26 \ python.exe rabbitmqadmin.exe -help -subcommands

创build一个Exchange: rabbitmqadmin -u {user} -p {password} -V {vhost} declare exchange name={name} type={type}

创build一个队列: rabbitmqadmin -u {user} -p {password} -V {vhost} declare queue name={name}

绑定队列交换: rabbitmqadmin -u {user} -p {password} -V {vhost} declare binding source={Exchange} destination={queue}

演练在RabbitMQ中创build和删除一个队列:

我找不到命令行命令。 这是我用java代码做的。

Ubuntu上的Rabbitmq-server版本3.3.5

列出队列,还没有队列:

 sudo rabbitmqctl list_queues [sudo] password for eric: Listing queues ... ...done. 

把它放在CreateQueue.java中

 import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; import java.util.*; public class CreateQueue { public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); Map<String, Object> args = new HashMap<String, Object>(); args.put("x-message-ttl", 60000); channel.queueDeclare("kowalski", false, false, false, args); channel.close(); connection.close(); } } 

提供您的rabbitmq安装附带的jar文件:

我正在使用rabbitmq-client.jar版本0.9.1,使用你的rabbitmq版本附带的版本。

编译并运行:

 javac -cp .:rabbitmq-client.jar CreateQueue.java java -cp .:rabbitmq-client.jar CreateQueue 

它应该完成没有错误,现在检查你的队列:

 sudo rabbitmqctl list_queues Listing queues ... kowalski 0 ...done. 

kowalski队列存在。

有助于在交易时绑定交易所:

 channel.queue_bind(queueName, exchange) 

C-;