我在处理消息时尝试处理两种不同类型的问题。
第一个问题是远程数据库是否关闭。在这种情况下,消息应该停止处理,然后再试一次。此消息不应该发送到 DLQ,并且应该一直尝试直到远程数据库启动。
第二个问题是消息出现问题时。在这种情况下,它应该去 DLQ。
我应该如何构建以下代码?
@Override
public void onMessage(Message message) {
try {
// Do some processing
messageProcessing(message); // Should DLQ if message is bad
// Save to the database
putNamedLocation(message); // <<--- Exception when external DB is down
} catch (Exception e) {
logger.error(e.getMessage());
mdc.setRollbackOnly();
}
}