我正在构建一个系统,它将通过Message (目前是JMS)从不同的系统接收消息。来自所有发件人系统的所有消息都有一个deviceId,并且在接收消息时没有顺序。例如,系统A可以用deviceId=1发送消息,系统b可以用deviceId=2发送消息。
我的目标是不开始处理有关同一个deviceId的消息,除非我从所有具有相同deviceId的发件人那里获得所有消息。
例如,如果我有3个系统A、B和C向我的系统发送消息:
System A sends messageA1 with deviceId=1
System B sends messageB1 with deviceId=1
System C sends messageC1 with deviceId=3
System C sends messageC2 with deviceId=1 <--- here I should start processing of messageA1, messageB1 and messageC2 because they are having the same deviceID 1.这个问题应该通过在我的系统中使用某种同步机制、消息代理还是像spring- integration /apache camel这样的集成框架来解决呢?
发布于 2017-09-16 14:53:55
您可以在Apache中使用缓存组件来实现这一点。我认为有EHCache组件。
实质上:
然后,您可以偏离路线,将每个传入的消息路由到特定的基于deviceId的队列中,以便进行临时存储。这可以是JMS、ActiveMQ或类似的东西。
https://stackoverflow.com/questions/46254511
复制相似问题