gpt4 book ai didi

rabbitmq - 鼠兔偶尔丢弃 basic_publish 消息

转载 作者:行者123 更新时间:2023-12-01 03:43:55 25 4
gpt4 key购买 nike

我正在尝试使用 celery 任务用 pika 发布消息。

from celery import shared_task
from django.conf import settings
import json

@shared_task
def publish_message():
params = pika.URLParameters(settings.BROKER_URL + '?' + 'socket_timeout=10&' + 'connection_attempts=2')
conn = pika.BlockingConnection(parameters=params)
channel = conn.channel()
channel.exchange_declare(
exchange = 'foo',
type='topic'
)
channel.tx_select()
channel.basic_publish(
exchange = 'foo',
routing_key = 'bar',
body = json.dumps({'foo':'bar'}),
properties = pika.BasicProperties(content_type='application/json')
)
channel.tx_commit()
conn.close()

这个任务是从 View 中调用的。

由于一些奇怪的原因,有时是随机的,消息没有排队。就我而言,每隔一条消息就会被丢弃。我在这里缺少什么?

最佳答案

我建议您启用 confirm_delivery在鼠兔。这将确保消息正确传递,并且如果由于某种原因无法传递消息。 Pika 将失败并出现异常或返回 False。

channel.confirm_delivery()
successful = channel.basic_publish(...)

如果过程失败,您可以尝试再次发送消息,或记录异常中的错误消息,以便您可以采取相应措施。

关于rabbitmq - 鼠兔偶尔丢弃 basic_publish 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com