2011-07-30 8 views
1

The docsは言う:設定配信モード(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

メッセージを配信しようとしている交換所には伝えることはできません。

通常、メッセージの受信者はメッセージを自動受信するか、正常に処理した後にメッセージを受信します。私はこれらの2つの選択肢のうちの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')); 
+0

Okeyありがとう:) しかし、私はdelivery_mode = 2を設定します。phpドキュメントはかなり明確ではありません。実際のコード – koos

関連する問題