7

RabbitMQ で dlx キューを実装しようとしています。シナリオは非常に簡単です。2 つのキューがあります: 1) 生きている 2) 死んでいる (x-dead-letter-exchange: "immediate", x-message-ttl: 5000)

および 1) 生きているにバインドされている「即時」交換

この例を実行しようとしました: http://blog.james-carr.org/2012/03/30/rabbitmq-sending-a-message-to-be-consumed-later/ しかし、メッセージが後にドロップされたようですttl の有効期限が切れ、取引所で公開されないため、私のアライブ キューは常に空です。

また、管理コンソールで手動でキューを作成しようとしましたが、同じ動作が得られます。

Ubuntu/rabbitmq 3.0.0 と Mac OS X および rabbitmq 2.8.7 でテストしました

何か不足していますか?

4

1 に答える 1

8

RabbitMQ でメッセージが「消える」場合、通常、問題はバインディングにあります。したがって、あなたの例を機能させるために、次のことを行いました。

  1. 2 つのキュー (生きている、死んでいる) を作成しました (TTL と DLX を使用)

  2. タイプDIRECTのimmediateと呼ばれる取引所を作成しました

  3. ルーティング キー「デッド」を使用して、交換「即時」とキュー「アライブ」の間のバインディングを作成しました。これは、メッセージのルーティング キーがデッド キューにあるためです (デフォルトのエクスチェンジを使用している場合、これは「デッド」です)。デッドレター交換のバインディングで一致する必要があります)。

ここで重要な部分は、即時交換とアライブキューの間のバインディングにあります。

メッセージをデッド キューにパブリッシュしたことをテストするために、メッセージがデッド キューに短時間表示された後、アライブ キューに表示されることを確認できます。

于 2012-11-29T11:43:10.253 に答える