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

时间:2014-12-12 11:43:36

标签: java apache-camel amazon-sqs

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

  1. 作为处理一些慢速命令的后台工作线程。
  2. 使用同步生成器对这些命令进行排队。
  3. 在中间,亚马逊SQS应该处理命令的事务性,重试,分发等。

    然而,当我将这两条路线加在一起时:

    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。

    我尝试使用多个CamelContexts和RouteBuilders,但我仍然会遇到这种情况。

    有没有办法强制交付给SQS? 感谢

1 个答案:

答案 0 :(得分:0)

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