我们有一个简单的项目,它从多个端点(代理)获取大量消息。这些代理都输出相同格式的消息(要放置在数据库中的实体对象)。所有代理都写入一个队列,我们使用这些并通过 JPA 将它们发送到数据库。
所以本质上,系统有一组生产者将消息写入一个队列。队列是单线程的,只接收消息并将它们转储到数据库中。
这里的问题是这种方法很慢。Camel 中是否有任何功能(例如重新排序),我们可以使用它们来根据它们的来源拆分这些消息。因此,虽然来自 Agent1 的消息需要按照它们创建的顺序进行持久化,但来自 Agent2 的消息是独立的,因此它们不应该按照 Agent1 的消息顺序等待。对于两个代理,这是一个简单的问题,因为我们只需创建两个队列,每个代理一个。我们有很多代理,所以我们需要一个可以扩展的解决方案。
是否有任何模式可以在骆驼中本地完成此任务?我们可以编写自己的保持队列,它与代理名称同步,并且只将一条消息放入多线程 JPA 写入队列,但这将是一种迂回的方式来做我们需要的事情设置从队列到 jpa 骆驼路由的回调,或者我们不会使用骆驼,而只是通过我们自己的管理器来完成(并不是说这会很复杂,但如果我们可以使用骆驼或其他东西来完成这一切,那就太好了并且不必重新发明轮子可以这么说)。