0

自動的に作成される amqp-gen キューを無効にするにはどうすればよいですか? Mule ActiveMQ では、「disableTemporaryReplyToDestinations」プロパティを取得しました。それを「true」に設定し、一方向の交換パターンを実行することで、非同期メッセージングを実装できます。

AMQP/RabbitMQ では別の話です。一方向の交換パターンはありますが、MuleStudio 内のコンポーネント側から設定するプロパティがなく、それらを無効にするように指示されます。RabbitMQ から無効にすることさえできません。パネル。

非同期実装に不要な tempQueues (AMQP では amqp-gen と呼ばれる) を無効にするにはどうすればよいですか?

これは私のテスト XML です

<mule xmlns:amqp="http://www.mulesoft.org/schema/mule/amqp" xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/amqp http://www.mulesoft.org/schema/mule/amqp/current/mule-amqp.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd ">

 <amqp:connector name="AMQP_Connector" validateConnections="true" 
                    host="arbuzqorks" 
                    port="1111" 
                    fallbackAddresses="localhost:5672" 
                    doc:name="AMQP Connector"/>

    <flow name="rabbitmq_demoFlow1" doc:name="rabbitmq_demoFlow1">
        <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8081" path="rabbitmq" doc:name="HTTP"/>
        <set-payload value="#['This is a test message that...']" doc:name="Setting payload"/>
        <amqp:outbound-endpoint  exchangeType="direct" responseTimeout="10000" doc:name="AMQP" connector-ref="AMQP_Connector" exchangeName="async-direct-test" exchangeDurable="true" queueDurable="true"/>
    </flow>
    <flow name="async-rabbitmqFlow1" doc:name="async-rabbitmqFlow1">
        <amqp:inbound-endpoint exchange-pattern="one-way" exchangeName="async-direct-test" exchangeDurable="true" queueDurable="true" responseTimeout="10000" connector-ref="AMQP_Connector" doc:name="AMQP"/>
        <byte-array-to-string-transformer doc:name="Byte Array to String"/>
        <set-payload value="#[payload + ' passed into the consumer flow']" doc:name="adding string to payload"/>
        <amqp:outbound-endpoint exchange-pattern="one-way" routingKey="test_response" exchangeType="direct" exchangeDurable="true" queueDurable="true" responseTimeout="10000" connector-ref="AMQP_Connector" doc:name="AMQP" exchangeName="async-direct-test"/>
    </flow>
    <flow name="async-rabbitmqFlow2" doc:name="async-rabbitmqFlow2">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="asyncamqp" doc:name="HTTP"/>
        <component class="com.web.esb.component.AsyncMessageRequestorComponent" doc:name="Request AMQP Message"/>
    </flow>
</mule>
4

1 に答える 1

1

あなたの「問題」は一時キューとそれらを無効にしようとすることとは関係ありませんが、実際には「プライベートキュー」と呼ばれる機能です(詳細についてはドキュメントを参照してください)。

基本的に、AMQP インバウンドおよびアウトバウンド エンドポイントで宣言するキューに名前を付けないため、RabbitMQ はそれらを接続に対してプライベートと見なし、生成された名前を付けます。

この属性を使用queueNameして、AMQP エンドポイントでキュー名を構成すると、意図したとおりに機能します。

于 2013-09-18T15:10:53.070 に答える