AMQP トポグラフィーの変更を回避 - Mule4

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!