0

私は 2 つのアプリで Mule ESB を使用しています (1 つは rabbitMQ を介してもう 1 つのアプリにステータスを発行します)。私の実稼働環境でのみ、これらの amqp.gen-queues がポップアップ表示されますが、それらはロックされており、その中に何が入っているかを見ることができません。それらは私の取引所 (パブリッシャー) にバインドされています。

顧客は、ランダムな資産が失われる問題としてそれを指摘しています。私はそれらが起こらないようにしようとしていますが、手がかりがありません. rabbitMQ チュートリアルによると、これらはキューを宣言するときに作成されますが、名前は指定しません。しかし、私はそうしていません。

詳細: 2 つのアプリは rabbitMQ への異なるログインを使用し、キューはコンシューマー アプリではなく、私のアプリ (パブリッシャー) によって作成されます。キュー名がなく、キュー宣言は次のようになります。

<amqp:connector name="amqpConnector"
    host="${myApp.status_reporting.host}"
    port="${myApp.status_reporting.port}"
    username="${myApp.status_reporting.username}"
    password="${myApp.status_reporting.password}"
    requestedHeartbeat="${myApp.status_reporting.requestedHeartbeat}"
    doc:name="AMQP Connector for Status Messages"/>


<flow name="cwm_send" doc:name="cwm_send">
    <amqp:outbound-endpoint 
        exchangeName="${myApp.status_reporting.exchange_name}"
        exchangeType="topic"
        exchangeDurable="${myApp.status_reporting.exchange_is_durable}"
        routingKey="${myApp.status_reporting.routing_key}"
        connector-ref="amqpConnector" 
        doc:name="AMQP Out" 
        queueDurable="true" 
        responseTimeout="10000"
    />
</flow>

ご覧のとおり、キュー名はありません。単なるルーティング キーです。

私の質問は次のとおりです: このルーティング キーに一致するこの交換にバインドされたキューがない場合、これらの一時的なキューが作成されるのはなぜですか? ロックされているメッセージをアプリで取得するにはどうすればよいですか? 私は建築的に何か間違ったことをしていますか?

自由回答の質問で申し訳ありませんが、どこかから始めなければなりません。

4

1 に答える 1

1

は設定されoutbound-endpointていませんexchange-pattern。IIRC デフォルトはrequest-responseです。

ヘッダーがないREPLY_TO場合、エンドポイントは一時キューを作成し、メッセージを交換に送信し、一時キューで応答を購読することを決定します。

この動作を望まない場合はexchange-pattern="one-way"、アウトバウンド エンドポイントに追加するだけです。

于 2015-06-14T12:28:01.533 に答える