我有一个简单的发布者,它将消息发送到队列。
<int:channel id="publishChannel"/>
<int-jms:outbound-channel-adapter channel="publishChannel" destination="testQueue" session-transacted="true"/>
@Publisher(channel = "publishChannel")
public String sendMessage (String text) {
return text;
}
如果代理崩溃,则发布者抛出MessageHandlingException。
是否可以阻止发布者,直到经纪人再次可用或定期重试?
答案 0 :(得分:1)
你可以add a retry advice to the outbound adapter。
<int-jms:outbound-channel-adapter channel="publishChannel" destination="testQueue" session-transacted="true>
<int:request-handler-advice-chain>
<ref bean="myRetryAdvice" />
</request-handler-advice-chain>
</int-jms:outbound-channel-adapter>
您可以使用退避策略(例如指数)配置建议,并在重试耗尽时执行某些操作(而不是抛出最终异常)。