rabbitmq 教程
时间: 2023-11-03 18:05:07 浏览: 168
RabbitMQ是一个开源的消息代理,它实现了高级消息队列协议(AMQP)标准,可以用于构建分布式系统中的异步消息通信。下面是RabbitMQ的基本教程。
## 安装RabbitMQ
1. 下载RabbitMQ安装包,官网地址:https://www.rabbitmq.com/download.html
2. 安装Erlang,官网地址:https://www.erlang.org/downloads
3. 安装RabbitMQ,根据操作系统选择对应的安装方式,安装完成后启动RabbitMQ服务。
## 使用RabbitMQ
### 发送和接收消息
1. 创建一个生产者(发送消息)和消费者(接收消息)。
2. 生产者将消息发送到RabbitMQ的队列中。
3. 消费者从队列中获取消息并进行处理。
### 创建队列
使用RabbitMQ的管理控制台或者命令行工具创建一个队列,指定队列名称和其他属性。例如,使用命令行工具创建一个名称为“hello”的队列:
```
$ rabbitmqctl add_queue hello
```
### 发送消息
使用RabbitMQ的客户端库连接到RabbitMQ服务,并将消息发送到指定的队列中。例如,使用Python的pika库发送一条消息:
```python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
```
### 接收消息
使用RabbitMQ的客户端库连接到RabbitMQ服务,并从指定的队列中获取消息。例如,使用Python的pika库接收一条消息:
```python
import pika
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
```
### 路由
RabbitMQ支持多种路由方式,例如:直接路由,主题路由,头路由等。使用不同的路由方式可以实现不同的消息分发策略。
### 绑定
将队列绑定到交换机上,指定路由键和其他属性。例如,使用命令行工具将队列“hello”绑定到默认的直接交换机上:
```
$ rabbitmqctl bind_queue hello amq.direct hello
```
### 消费者优先级
RabbitMQ支持消费者优先级,可以设置消费者的优先级,让高优先级的消费者先获取消息。例如,使用命令行工具设置消费者“consumer1”的优先级为1:
```
$ rabbitmqctl set_priority consumer1 1
```
### 消息持久化
RabbitMQ支持消息持久化,即消息在服务器宕机后不会丢失。将消息标记为持久化需要设置消息的属性,例如,在Python中:
```python
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!', properties=pika.BasicProperties(delivery_mode=2))
```
### 集群
RabbitMQ支持集群模式,可以在多台服务器上运行多个RabbitMQ节点,实现高可用和负载均衡。要创建一个集群,需要在每个节点上安装RabbitMQ,并进行配置,使它们能够相互通信。然后将节点加入到一个群集中,例如,在命令行工具中:
```
$ rabbitmqctl join_cluster rabbit@node1
```
## 总结
本文介绍了RabbitMQ的基本概念和使用方法,包括创建队列、发送和接收消息、路由、绑定、消费者优先级、消息持久化和集群等。RabbitMQ是一个强大的消息代理,可以用于构建分布式系统中的异步消息通信。
阅读全文