繁体   English   中英

设置AMQP(RabbitMQ)的传送模式

[英]Setting delivery mode for AMQP (RabbitMQ)

文档说:

public bool AMQPExchange::publish ( string $message , string $routing_key [, int $params = 0 [, array $attributes ]] )

所以我有这个

 $this->exchange->publish(serialize($queue_message), $routing_key,AMQP_MANDATORY,array('delivery_mode' => '2'));

我正在尝试让交易所保持尝试传递消息吗?

您不能告诉交易所继续尝试传递您的消息。

通常,邮件的收件人会自动确认该邮件,或者他们会在成功处理后确认该邮件。 我推荐这两个选择中的第二个。 如果未确认消息,则将重新排队该消息,并且如果队列中有多个订阅者,则有可能另一个订阅者将对其进行处理。

我的经验是与主题交流有关的所有内容(在该案例中,您通过使多个队列订阅相同的routing_key来实现扇出。我始终使用delivery_mode 2并将队列声明为持久队列。

如果在发布消息之前队列不存在,那么它们将静默消失。

我怀疑您的问题出在字符串'2' 您是否尝试过使用数字2 同样,最好在数组中指定一个content_type。 那会做到的

$this->exchange->publish(serialize($queue_message),
            $routing_key,AMQP_MANDATORY,array('delivery_mode' => 2,
                                              'content_type' => 'text/json'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM