queueは、同じexchange bindと複数のroutingKey とすることができる
qos(prefetchCount)の意味:prefetchCountの数はackなしで一度に取得するメッセージの数を表し、スループットを増加することができる.
消費者はキューのみに関係し、routingKey exchageとは関係ありません. exchageはメッセージを指定キューに入れる責任を負い、消費者とは関係ない.
排他キューは、このキューがこのconnectionによって排他されることしかできないことを示すキュー配信メッセージは、ポーリングメカニズムを使用する、すなわち、複数の消費者が同じキューを消費する場合、消費者は、メッセージを受信したをポーリングする.
のデフォルトでは、exchangeがメッセージを処理できない場合はメッセージが破棄されます.処理されているかどうかを知るには、mandatoryパラメータを使用してメッセージをパブリッシュします.mandatoryをオンにすると、brokerはbasicを送信します.return送信者へ
rabbitmqはimmediateパラメータをサポートしていません.immediate=trueとは、メッセージを送信するときに消費者がメッセージを処理できるかどうかを判断し、そうでなければすぐに破棄することです.同様の機能を実装するには、DLX(デッド・メッセージ・キュー)を使用します.
パブリッシャーconfirmモードを開くjavaメソッド:final AMQP.Confirm.SelectOk selectOk = channel.confirmSelect();
channel.basicPublish(EXCHANGE, ROUTE_KEY, true, false, null, message.getBytes());
final boolean b = channel.waitForConfirms();
....
これもトランザクションの代替方法です.トランザクション・モードを開始すると250倍のパフォーマンスが低下するためです.
channel.waitForConfirms();
メソッドの実行時にブロックされます.
rabbitmqは、キュー全体のメッセージの有効期限の設定だけでなく、各メッセージの有効期限の設定もサポートします.2つが同時に設定されている場合は、2つのうち最小のを取得します.
rabbitmqはキューの期限切れをサポートし、消費者がいない場合、期限切れになると自動的にキューが削除されます.
デッドメッセージキュー遅延の注意事項:後のメッセージの有効期限が前のメッセージより小さい場合、デッドメッセージは他のキューに順番に挿入されます.