私はrabbitmqが初めてで、次のシナリオを試しています
--> プロデューサーがメッセージを送信
--> コンシューマーがメッセージを受信
-- 独自のロジックを実行
ロジックが失敗した場合 - 再キューイング
--> コンシューマーが失敗した場合 (マシンがダウンした場合)、メッセージを再キューイングします。
Spring rabbitTemplate を使用して基本的な送信者を実装しました
rabbitTemplate.convertAndSend(.....);
そして消費者のために私はメッセージリスナーを実装しました
public class CustomMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
//** my own logic**
}
}
春を通してコンテナに追加しました
<bean id="aListener" class="com.sample.CustomMessageListener" autowire="byName"/>
<rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory" acknowledge="auto" prefetch="750" concurrency="5" >
<rabbit:listener ref="aListener" queues="reportQueue"/>
</rabbit:listener-container>
この部分までは正常に動作しています。
リスナーで言及されている**自分のロジック**が失敗した場合。メッセージを再キューイングしたい。どうすればこれを実装できますか。私が経験したブログから、returnedMessage をオーバーライドする必要があるようです。しかし、リスナーを介してそれを行う方法がわかりません。