rabbitmq中如何发送确认消息
时间: 2023-07-05 16:05:31 浏览: 152
C# .Net RabbitMQ消息队列发送和接收实例程序
5星 · 资源好评率100%
在 RabbitMQ 中,可以使用确认模式来确保消息被正确地处理。确认模式有两种:基础确认模式和事务模式。其中,基础确认模式是更常用的一种。
在基础确认模式下,生产者通过 `channel.confirm_select()` 方法将 channel 设置为确认模式。然后,每当生产者发送一条消息时,都会设置一个回调函数,在服务器确认收到消息后,该回调函数就会被触发。在回调函数中,可以进行一些处理,比如记录日志或者发送下一条消息。
以下是一个示例代码:
```python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 将 channel 设置为确认模式
channel.confirm_select()
# 定义回调函数
def callback(ch, method, properties, body):
print("Message received:", body)
ch.basic_ack(delivery_tag=method.delivery_tag) # 确认消息已被处理
# 向队列发送消息,并设置回调函数
channel.basic_publish(exchange='', routing_key='hello', body='Hello, World!')
channel.add_callback(callback)
# 等待确认消息
if channel.waitForConfirms():
print("Message sent successfully.")
else:
print("Failed to send message.")
connection.close()
```
在上面的代码中,我们首先将 `channel` 设置为确认模式,然后向队列发送一条消息,并设置一个回调函数 `callback`。在回调函数中,我们打印出收到的消息,并调用 `ch.basic_ack()` 方法来确认消息已被处理。最后,我们调用 `channel.waitForConfirms()` 方法来等待消息被确认。如果消息发送成功,该方法将返回 `True`,否则返回 `False`。
阅读全文