我有一个流监听器,它监听一个兔子mq,并根据输入的msg进行插入/更新操作,并将其持久保存到底层的Db2数据库。该数据库每周停机6小时。如何安排监听器在此时间范围内不运行,这样我就不会丢失输入消息。请记住,这个消息是在异步上下文中从兔队列的上游发送的,所以我不能要求上游在停机后重新发布/重试。
@StreamListener(target = Sink.INPUT)
public void testListener(byte[] msg)
{
System.out.println(new String(msg));
try{
int count = zoneInsert(mapper.readValue(msg, OrderDTO.class));
System.out.println("inserted "+count+" row");
}catch(Exception e){
e.printStackTrace();
}
}
答案 0 :(得分:2)
现在,并不多。我们在2.0中添加了对生命周期控制的支持。对此的两个黑客将是: 1.停止你的听力申请(如果可能的话) 2.将错误消息转发给DLQ并安排DLQ应用程序在数据库恢复生命后立即启动