過去のバインディングの設定が残っている
原因
最新の状態では設定していなくても、過去にバインディングしていた場合にはその設定が残っています。
というのも、RabbitMQのバインディングは管理画面で手動削除しない限りは残ってしますからです。(違うよ、方法があるよという方はコメント頂けると助かります)
状況
私が実際に陥っていた状況です。
Exchange1 ⇒ Queue2 を一度設定してデプロイしてしまった後に、設定が誤っていたのでExchange2を追加して1と2で個別に設定したつもりでしたが、実際には「Exchange1 ⇒ Queue2」の設定は残ってしまっており、意図しないメッセージングが行われてしまっていました。
対処
一度作られたバインディングは手動で削除するしかないということで、管理画面から該当のバインディングを削除しました。
デフォルトエクスチェンジで設定されている
このデフォルトエクスチェンジには特定のルールが存在し、以下の特徴があります。
特に何も設定していないけどなぜかバインドされているという場合はデフォルトエクスチェンジによるものかを確認してみてください。
キュー名がルーティングキーとして使用される
デフォルトエクスチェンジにバインドされたキューは、自動的にそのキュー名がルーティングキーとして機能します。
キューは自動的にバインドされる
RabbitMQを設定した時点で、各キューがデフォルトエクスチェンジにバインドされており、キュー名を使って直接メッセージを送信できます。
用途
- 単純なプロデューサー・コンシューマーモデルで使いやすい。
- 特別なエクスチェンジを作成せずにキューにメッセージを直接送信したい場合に便利。
もし意図しない設定の挙動があった場合、このような点について確認してみてください。
コメント