rabbitmq 动态创建队列
时间: 2023-09-28 22:07:35 浏览: 90
RabbitMQ工具类实现配置文件动态创建队列和绑定
5星 · 资源好评率100%
在 RabbitMQ 中,可以通过 AMQP 协议动态创建队列。以下是使用 Python 语言创建队列的示例代码:
```python
import pika
# 连接 RabbitMQ 服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明队列
channel.queue_declare(queue='my_queue')
# 发送消息到队列
channel.basic_publish(exchange='', routing_key='my_queue', body='Hello, World!')
print(" [x] Sent 'Hello, World!'")
# 关闭连接
connection.close()
```
在上面的代码中,我们使用 `channel.queue_declare` 方法动态创建了一个名为 `my_queue` 的队列。如果该队列已经存在,则不会创建新的队列。
要从队列中接收消息,可以使用 `channel.basic_consume` 方法。以下是一个接收消息的示例代码:
```python
import pika
# 连接 RabbitMQ 服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明队列
channel.queue_declare(queue='my_queue')
# 定义回调函数
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
# 接收消息
channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
# 启动消费者
channel.start_consuming()
```
在上面的代码中,我们使用 `channel.basic_consume` 方法订阅了队列 `my_queue` 的消息。当有新消息到达队列时,会触发回调函数 `callback`,该函数将接收到的消息打印到控制台。
需要注意的是,当队列不存在时,消费者无法订阅该队列。因此,在消费者代码中应该先检查队列是否存在,如果不存在则先创建队列。
阅读全文