こんにちは、Grails アプリケーション内で RabbitMQ を使用しており、リスナーの開始を遅らせる方法を探しています。アプリケーションの配線全体が完了する前にそれらが開始されるようになったので、起動後に開始したいと思います..これを行う方法について何か提案はありますか?
これにはxml構成を使用しています..
<rabbit:listener-container connection-factory="connectionFactory" message converter="jsonMessageConverter" acknowledge="auto">
<rabbit:listener queue-names="log.soap.in" ref="logSoapInListener" />
</rabbit:listener-container>
そのため、grails アプリケーションを開始するとコンテキストが開始されますが、すべてが接続されるまでに時間がかかります。したがって、アプリケーションの開始時にリスナーは既に呼び出されていますが、メッセージを正しく処理できません。
class LogSoapListenerService implements MessageListener {
LogSoapService logSoapService
JsonMapper jsonMapper
@Override
void onMessage(Message message) {
String body = new String(message.body, message.properties.contentEncoding ?: "UTF-8")
logSoapService.process(body)
}
}