非常长的骆驼重新交付政策

时间:2016-03-03 09:27:45

标签: apache-camel jms activemq

我正在使用Camel,但我遇到了业务问题。我们从activemq队列中使用订单消息。我们要做的第一件事是检查我们的数据库,看看客户是否存在。如果客户不存在,那么支持团队需要在不同的系统中填充客户。有时这可能需要10个小时甚至第二天。

我的问题是如何处理这个问题。在我看来,我可以将这些消息出列,将它们存储在我们的数据库中并每隔一段时间重新运行它们(一个自定义编码的解决方案),或者我可以在数据库中记下错误然后将它们返回到activemq队列如果需要长时间的重新发送政策并且到期,请说每24小时每2小时重新发送一次。

这会节省很多代码,但我的问题是,方法2是一种合理的方法,还是可能导致资源问题或不知道消息在哪里出现问题?

1 个答案:

答案 0 :(得分:0)

这是一种非常常见的情况。如果您想深入了解这些工作的进展情况,那么最好使用数据库。

您的队列消耗应该非常简单:使用消息,检查客户是否存在;如果是这样的话,否则在TODO表中写一条记录。

设置一个单独的路径以在计时器上运行 - 每隔X分钟。它应该提取TODO记录,并为每个记录检查客户是否存在;如果是这样的话,否则用当前时间戳(最后一次重试记录)更新记录。

这使您可以清楚地了解系统状态,然后可以将其集成到控制台中以查看未完成作业的状态。

您的选项2有几个缺点:

  • 您依赖于ActiveMQ调度程序,该调度程序使用位于常规商店旁边的KahaDB变体,可能与您的H / A设置不兼容(您需要共享文件系统)
  • 您无法在不扫描队列的情况下看到消息本身,这是一个反模式 - 使用队列作为数据库 - 您也可以使用数据库,尤其是如果您可以预期需要有选择地删除特别留言。
相关问题