rabbitmq详细笔记
时间: 2023-11-17 08:52:39 浏览: 79
RabbitMQ详细讲解
RabbitMQ是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP)标准,可以在分布式应用中进行消息传递。RabbitMQ支持多种消息协议,包括AMQP、MQTT、STOMP等。下面是RabbitMQ的详细笔记:
1. RabbitMQ的基本概念
RabbitMQ是一个消息代理软件,它有以下几个基本概念:
- 生产者(Producer):发送消息的应用程序。
- 消费者(Consumer):接收消息的应用程序。
- 队列(Queue):存储消息的缓冲区。
- 交换机(Exchange):接收生产者发送的消息,并将消息路由到队列中。
- 绑定(Binding):定义交换机和队列之间的关系。
2. RabbitMQ的消息传递模型
RabbitMQ的消息传递模型基于AMQP协议,包括以下几个步骤:
- 生产者将消息发送给交换机。
- 交换机根据消息的路由键(routing key)将消息路由到一个或多个队列。
- 消费者从队列中接收消息。
在RabbitMQ中,消息可以按照以下几种方式进行路由:
- 直接路由(Direct Exchange):只有指定路由键与绑定的路由键完全匹配的消息才会被路由到对应的队列中。
- 主题路由(Topic Exchange):路由键可以使用通配符进行匹配,例如"queue.*"表示匹配以"queue."开头的任意路由键。
- 广播路由(Fanout Exchange):将消息路由到所有绑定的队列中,无需指定路由键。
3. RabbitMQ的安装和配置
RabbitMQ可以在Linux、Windows和MacOS等操作系统上安装,具体安装方法可以参考官方文档(https://www.rabbitmq.com/download.html)。
安装完成后,需要进行一些基本的配置,包括创建用户和设置权限等。可以使用RabbitMQ的控制台或者命令行工具进行配置。
4. RabbitMQ的使用
使用RabbitMQ需要编写生产者和消费者的代码,并配置交换机、队列和绑定等信息。以下是一个简单的示例:
生产者代码:
```python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='test_exchange', exchange_type='direct')
channel.basic_publish(
exchange='test_exchange',
routing_key='test_key',
body='Hello, RabbitMQ!'
)
print("Sent 'Hello, RabbitMQ!'")
connection.close()
```
消费者代码:
```python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='test_exchange', exchange_type='direct')
result = channel.queue_declare(queue='', exclusive=True)
queue_name = result.method.queue
channel.queue_bind(
exchange='test_exchange',
queue=queue_name,
routing_key='test_key'
)
def callback(ch, method, properties, body):
print("Received %r" % body)
channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
print('Waiting for messages...')
channel.start_consuming()
```
以上代码实现了一个直接路由的消息传递模型。生产者将消息发送到名为"test_exchange"的交换机中,路由键为"test_key",消费者从队列中接收消息并打印到控制台中。
阅读全文