私は深刻な頭痛の種となっているいくつかのレガシーRabbitMQコードを継承しています。理想的には、同様の質問を参照できる「公式」ドキュメントを参照してください。
次のようなチャネルを使用して検索を実行するワーカーからの応答を受け取るいくつかのチャネルを作成します。
channelIn.queueDeclare("", false, false, true, null);
channelIn.queueBind("", AmqpClient.NAME_EXCHANGE,
AmqpClient.ROUTING_KEY_ROOT_INCOMING + uniqueId);
メーリングリストやフォーラムを閲覧してわかったことは、
- 空の名前でキューを宣言すると、サーバーは一意の名前を自動生成できます。
- キューにはグローバルに一意の名前が必要です。
これは本当ですか?
また、上記の 2 行目で、ブログやメーリング リストのリベラルな解釈に基づく私の理解では、空のキュー名を持つ queuebind は、最後に作成されたキューに自動的にバインドされます。自動生成された名前をぎこちない DeclareOK オブジェクトから引き出す必要がないので、これはいいことのように思えます。
これは本当ですか?もしそうなら、これはマルチスレッド環境で動作しますか?
つまり、一部のチャネルが別のチャネルのキューにバインドされ、その別のチャネルが閉じられた場合、正しくバインドされていないチャネルがキューを使用しようとするとエラーが発生する可能性はありますか? (キューは autodelete=true で作成されていることに注意してください。) 私のテストでは、はい、と思いましたが、そこに問題があるとは確信していません。