Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 Camel:从同一队列读取和写入,无直接路由_Java_Apache Camel_Amazon Sqs - Fatal编程技术网

Java Camel:从同一队列读取和写入,无直接路由

Java Camel:从同一队列读取和写入,无直接路由,java,apache-camel,amazon-sqs,Java,Apache Camel,Amazon Sqs,我尝试在同一应用程序中以两种方式使用Camel: 作为后台工作线程,用于处理一些较慢的命令。 使用同步生成器将这些命令排队。 在中间,AmazonSQS应该处理命令的事务性、重试、分发等 但是,当我将这两条路线加在一起时: String sqsUri = "aws-sqs://myqueue"; from("direct:cmdQueue").marshal(json).log("Enqueued command").to(sqsUri); from(sqsUri).unmarshal(json

我尝试在同一应用程序中以两种方式使用Camel:

作为后台工作线程,用于处理一些较慢的命令。 使用同步生成器将这些命令排队。 在中间,AmazonSQS应该处理命令的事务性、重试、分发等

但是,当我将这两条路线加在一起时:

String sqsUri = "aws-sqs://myqueue";
from("direct:cmdQueue").marshal(json).log("Enqueued command").to(sqsUri);
from(sqsUri).unmarshal(json).log("Dequeued command").beanRef("cmdExecutor");
Camel使SQS完全短路,消息被同步处理,直到结束,并且从未发送到SQS

我尝试使用多个CamleContext和RouteBuilder,但我仍然得到这种行为

是否有办法强制交付给SQS?
谢谢

也许将消息发送到本地队列(如vm)并从那里拾取并发送到SQS就可以了。发送到VM时,请确保将标志waitForTaskToComplete设置为false。

这不是一个可行的解决方案:发送必须保证发送到SQS,否则会有消息丢失的风险。发送到VM并将waitForTaskToComplete设置为true如何?