AMQP トポグラフィーの変更を回避する方法

AMQP の交換とキューの宣言が無効になるように、createFallbackExchange および createFallbackQueue グローバル設定プロパティを設定できます。AMQP トポグラフィーの変更が試行されないことを保証する必要があるシナリオでは、これらのパラメータが追加されています。そのような場合、以前に存在していないキューと交換の両方の宣言で AMQP:CREATION_NOT_ALLOWED エラーが発生します。

たとえば、次のようなフローになります。

<amqp:config name="Amqp_Config" createFallbackExchange="false" >
	<amqp:connection host="localhost" username="guest" password="guest" />
</amqp:config>


<flow name="mule-no-create-fallback-queue">
	<http:listener doc:name="Listener"config-ref="HTTP_Listener_config" path="/"/>
	<amqp:publish doc:name="Publish" config-ref="Amqp_Config" exchangeName="newExchange">
		<amqp:fallback-exchange-definition />
	</amqp:publish>
</flow>

newExchange 交換が存在せず、createFallbackExchange が false に設定されている場合、publish 操作の呼び出しで AMQP:CREATION_NOT_ALLOWED エラーが発生します。 createFallbackExchange は、操作レベルで上書きでき、値として式を取得できます。次に例を示します。

<flow name="mule-no-create-fallback-queue">
	<http:listener doc:name="Listener"config-ref="HTTP_Listener_config" path="/"/>
	<amqp:publish doc:name="Publish" config-ref="Amqp_Config" exchangeName="newExchange" createFallbackExchange="false">
		<amqp:fallback-exchange-definition />
	</amqp:publish>
</flow>

consume 操作の createFallbackQueue パラメータの使用方法は類似しています。

<amqp:config name="Amqp_Config" createFallbackQueue="false" >
	<amqp:connection host="localhost" username="guest" password="guest" />
</amqp:config>


<flow name="mule-no-create-fallback-queue">
	<http:listener doc:name="Listener"config-ref="HTTP_Listener_config" path="/"/>
	<amqp:consume config-ref="Amqp_Config" queueName="testQueue">
		<amqp:fallback-queue-definition removalStrategy="SHUTDOWN" exchangeToBind="exchangeToBindToQueue" />
	</amqp:consume>
</flow>

このパラメータは、リスナでも使用できます。

<amqp:config name="Amqp_Config" createFallbackQueue="false" >
	<amqp:connection host="localhost" username="guest" password="guest" />
</amqp:config>


<flow name="mule-no-create-fallback-queue">
	<amqp:listener config-ref="Amqp_Config" queueName="testQueue">
		<amqp:fallback-queue-definition removalStrategy="SHUTDOWN" exchangeToBind="exchangeToBindToQueue" />
	</amqp:listener>
	<amqp:consume config-ref="Amqp_Config" queueName="testQueue">
		<amqp:fallback-queue-definition removalStrategy="SHUTDOWN" exchangeToBind="exchangeToBindToQueue" />
	</amqp:consume>
</flow>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub