2011-07-30 67 views
1

The docs说:设置传送模式。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')); 

我试图让交流继续尝试传递消息?

+1

你的问题是什么? –

+0

我正在尝试设置传送模式:但我似乎无法正确地进行传送? '$ this-> exchange-> publish(serialize($ queue_message),$ routing_key,AMQP_MANDATORY,array('delivery_mode'=>'2'));' – jacob72

+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')); 
+0

Okey谢谢:) 但是如何设置delivery_mode = 2 php文档不太清楚I.e实际的代码 – koos