retryQueue
Mule 3.3.1 では、非同期処理中に外部サービスのいずれかがダウンしたときに、特定の「次の再試行」タイムスタンプを使用してメッセージをキュー ( ) に配置したいと考えています。これからメッセージを処理するフローretryQueue
は、「次の再試行」時間が現在の時間を過ぎているかのように、「次の再試行」時間に基づいてメッセージを選択し、処理するメッセージを選択します。次のリンクに記載されている内容と同様です。
JMS キューの実装を再試行して、一定時間後に失敗したメッセージを配信する
これを実現するためのサンプル コードを提供していただけますか。
私は試した:
<on-redelivery-attempts-exceeded>
<message-properties-transformer scope="outbound">
<add-message-property key="putOnQueueTime" value="#[function:datestamp:yyyy-MM-dd hh:mm:ssZ]" />
</message-properties-transformer>
<jms:outbound-endpoint ref="retryQueue"/>
</on-redelivery-attempts-exceeded>
そして受信フローで
<jms:inbound-endpoint ref="retryQueue">
<!-- I have no idea how to do the selector....
I tried....<jms:selector expression="#[header:INBOUND:putOnQueueTime > ((function:now) - 30)]"/>, but obviously it doesn't work. Gives me an invalid message selector. -->
</jms:inbound-endpoint>.
別の注意: を使用して送信プロパティを設定した場合
<add-message-property key="putOnQueueTime" value="#[function:now]"/>,
ヘッダーの一部として引き継がれません。そのため、次のように変更しました。
<add-message-property key="putOnQueueTime" value="#[function:datestamp:yyyy-MM-dd hh:mm:ssZ]" />