我正在使用Camel,但我遇到了业务问题。我们从activemq队列中使用订单消息。我们要做的第一件事是检查我们的数据库,看看客户是否存在。如果客户不存在,那么支持团队需要在不同的系统中填充客户。有时这可能需要10个小时甚至第二天。
我的问题是如何处理这个问题。在我看来,我可以将这些消息出列,将它们存储在我们的数据库中并每隔一段时间重新运行它们(一个自定义编码的解决方案),或者我可以在数据库中记下错误然后将它们返回到activemq队列如果需要长时间的重新发送政策并且到期,请说每24小时每2小时重新发送一次。
这会节省很多代码,但我的问题是,方法2是一种合理的方法,还是可能导致资源问题或不知道消息在哪里出现问题?
答案 0 :(得分:0)
这是一种非常常见的情况。如果您想深入了解这些工作的进展情况,那么最好使用数据库。
您的队列消耗应该非常简单:使用消息,检查客户是否存在;如果是这样的话,否则在TODO表中写一条记录。
设置一个单独的路径以在计时器上运行 - 每隔X分钟。它应该提取TODO记录,并为每个记录检查客户是否存在;如果是这样的话,否则用当前时间戳(最后一次重试记录)更新记录。
这使您可以清楚地了解系统状态,然后可以将其集成到控制台中以查看未完成作业的状态。
您的选项2有几个缺点: