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

rabbitmq

49893 观看

9回复

1108 作者的声誉

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

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

作者: Fanooos 的来源 发布者: 2010 年 12 月 28 日

回应 (9)


2

1362 作者的声誉

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

然而,使用快速脚本来完成它是非常简单的,并且兔子mq入门指南显示了它的几个例子,无论是在发布者还是消费者方面。

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

我正在掩饰连接,但它是一个文字的衬垫来创建一个队列。该操作也是幂等的,这意味着您可以将该语句包含在脚本中并且安全地知道它不会继续重新创建队列或者吹出现有的同名。

作者: bakasan 发布者: 09.03.2011 11:13

17

24568 作者的声誉

决定

安装RabbitMQ管理插件。它附带一个命令行工具,您可以使用它来配置所有队列/交换/等。

作者: OJ. 发布者: 28.04.2011 11:15

-2

4625 作者的声誉

帮助您在交易时绑定交易所:

channel.queue_bind(queueName, exchange)

C-;

作者: Phlip 发布者: 07.04.2013 06:31

-1

83221 作者的声誉

演练在RabbitMQ中创建和删除队列:

我找不到命令行命令来执行此操作。这是我在java代码中的表现。

3.3.5Ubuntu上的Rabbitmq-server版本。

列出队列,没有队列:

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队列存在。

作者: Eric Leschinski 发布者: 08.09.2014 08:04

68

9693 作者的声誉

摘要:

其他答案是要求的好方法。以下是可以从命令行使用的命令。

首先,做所有必要的准备工作,例如安装兔子rabbitmqadmin,和rabbitctl。我们的想法是使用来自rabbitmqctl和的命令rabbitmqadmin。您可以看到一些命令示例: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。我试图使用解释自己的变量。祝好运 :)

作者: James Oravec 发布者: 18.09.2014 02:33

2

21 作者的声誉

如果您使用的是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包/库中也有(命令行)示例。构建它之后,您可以通过命令行发送消息,例如

amqp_sendstring localhost 5672 amq.direct test "hello world"

玩得开心 ...

作者: rahard 发布者: 27.02.2015 03:13

1

58 作者的声誉

在Windows上从CLI动态创建RabbitMq Exchange,队列和绑定

我已经安装了RabbitMQ服务器并运行了多个队列和交换,现在想要从命令行动态创建它。我知道这是一个老问题,但我认为发布这些信息会有所帮助。

以下是我的所作所为:

建立

  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并将文件保存为在python exe位置的rabbitmqadmin.exe

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

代码:在批处理文件中使用以下命令

  1. 创建交流:

    c:\ python26 \ python.exe rabbitmqadmin.exe声明交换名称= ExchangeName1类型=主题持久= true

  2. 创建队列:

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

  3. 创建绑定:

    c:\ python26 \ python.exe rabbitmqadmin.exe声明绑定源= ExchangeName1 destination_type = queue destination = NameofQueue1 routing_key = RoutingKey1

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

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

作者: Milli 发布者: 24.04.2015 02:33

3

31 作者的声誉

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

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

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

作者: Kaushal Dontula 发布者: 10.02.2017 08:45

0

1229 作者的声誉

也许派对有点晚了,但我是用CURL做的。

对于队列:

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" \
-XPUT -d'{"durable":true}' \
http://192.168.99.100:15672/api/queues/%2f/QUEUENAME

并为绑定

curl -i -u RABBITUSER:RABBITPASSWORD -H "content-type:application/json" \
-XPOST -d"{\"routing_key\":\"QUEUENAME\"}" \
http://192.168.99.100:15672/api/bindings/%2f/e/EXCHANGENAME/q/QUEUENAME

注意192.168.99.100:15672指向我的RMQ管理

作者: userMod2 发布者: 07.11.2018 03:58
32x32