Spring integration 使用AMQP在没有MessageStore的Spring集成聚合器中的消息持久性?

Spring integration 使用AMQP在没有MessageStore的Spring集成聚合器中的消息持久性?,spring-integration,Spring Integration,我想知道,当我使用聚合器时,通过利用聚合器前后AMQP RabbitMQ队列的持久性,是否可以在Spring集成设置中使用持久性,聚合器不受MessageStore支持。 我想这将使用ack:聚合器在收集所有部分并发送结果消息之前不会确认消息。 此外,我想知道这是否是一个好主意: 我是队列的新手,正在尝试对模式的使用有一个良好的感觉 我的业务逻辑如下: 我在一个队列上收到一条消息。 每条消息必须导致两个不相关的webservice调用,最好是并行调用。 这两个调用的结果必须与原始消息中的详细信息

我想知道,当我使用聚合器时,通过利用聚合器前后AMQP RabbitMQ队列的持久性,是否可以在Spring集成设置中使用持久性,聚合器不受MessageStore支持。 我想这将使用ack:聚合器在收集所有部分并发送结果消息之前不会确认消息。 此外,我想知道这是否是一个好主意:

我是队列的新手,正在尝试对模式的使用有一个良好的感觉

我的业务逻辑如下:

我在一个队列上收到一条消息。 每条消息必须导致两个不相关的webservice调用,最好是并行调用。 这两个调用的结果必须与原始消息中的详细信息相结合。 然后,组合必须作为队列上的新消息发送出去。 信息很重要,因此不能丢失

我希望只使用一个“持久”系统,即RabbitMQ,而不必添加数据库


我已经尽力让这个问题具体化,但是对于如何解决这个问题的任何其他建议都非常感谢:

您想做什么让我想起了您

因此,您从AMQP收到一条消息,将其发送到ScatterGather端点,并等待聚合回复。这对于坚持默认确认已经足够了


没错,scatterChannel可以与执行器一起发布SubscribeChannel,以并行调用Web服务。无论如何,gatherer进程将根据发布策略等待回复,并将阻止原始AMQP侦听器不要过早地确认消息。

入站通道上的预回迁必须至少与组中预期的消息相同。代理只发送预回迁未确认的消息。@GaryRussell如果我正确理解您的评论,如果我有多个原始消息的出站请求试图并行处理多个原始消息,我的预回迁将必须相应地扩展?没错,是的;容器并发*预取将决定代理允许的未完成消息的数量——这有点脆弱——如果你弄错了,应用程序将挂起。我对设计不是很感兴趣。@GaryRussell是“预回迁”的设计,还是您不喜欢的问题/答案中描述的设计您会使用什么作为替代方案使用rabbitmq队列作为存储有点奇怪,而且,正如我所说的,如果设置错误,它会很脆弱。我想您可以使用组超时功能和“nack”丢弃的记录来处理这个问题。