The docs说:
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'));
我正试图让交易所继续尝试传递信息?
答案 0 :(得分:1)
您不能告诉交易所继续尝试传递您的信息。
通常,邮件的收件人会自动删除邮件,或者在成功处理邮件后会收到邮件。我推荐这两个选择中的第二个。如果消息没有被激活,那么它将被重新排队,如果队列中有多个用户,那么不同的用户可能会处理它。
我的经验是所有主题交换(通过让多个队列订阅相同的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'));