0

retryQueueMule 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]" />
4

2 に答える 2