Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用Spring Integration从队列读取的消息在事务处理时为ACK时_Java_Spring_Spring Integration - Fatal编程技术网

Java 当使用Spring Integration从队列读取的消息在事务处理时为ACK时

Java 当使用Spring Integration从队列读取的消息在事务处理时为ACK时,java,spring,spring-integration,Java,Spring,Spring Integration,我们在Spring集成中有一个管道,它从ActiveMQ 5队列读取消息,然后在拆分器、转换器和聚合器之间移动这些消息。。。。最后,我们将结果发送到Rest端点 如果我们使用acknowledge=Transact,这些消息何时确认?这取决于入站通道适配器的类型 对于消息驱动适配器,当流完成或容器线程通过队列通道或任务执行器转交给另一个线程时,它将被确认 对于轮询通道适配器,它会在调用流之前立即得到确认,除非您使轮询器具有事务性,在这种情况下,它的行为与消息驱动适配器相同。因此,如果我们的管道可

我们在Spring集成中有一个管道,它从ActiveMQ 5队列读取消息,然后在拆分器、转换器和聚合器之间移动这些消息。。。。最后,我们将结果发送到Rest端点


如果我们使用acknowledge=Transact,这些消息何时确认?

这取决于入站通道适配器的类型

对于消息驱动适配器,当流完成或容器线程通过队列通道或任务执行器转交给另一个线程时,它将被确认


对于轮询通道适配器,它会在调用流之前立即得到确认,除非您使轮询器具有事务性,在这种情况下,它的行为与消息驱动适配器相同。

因此,如果我们的管道可能需要4个小时才能完成,因为我们需要聚合来自不同来源的消息,那么我们可能不应该使用Transact,在聚合器之前使用客户端并手动确认消息?在该时间段内保持消息未确认不是一个好的设计。听起来您正试图将消息传递平台用作数据库。事务不能跨越多个源;我建议您重新审视您的设计。事实上,我们从4个不同的外部来源收到消息,相差3个小时,我们将它们聚合在一起,在拥有4个元素时发布。这是因为我们的过程太长了。听起来你应该使用数据库或NoSQL存储来维护状态,而不是将消息保持在暂时状态。