骆驼:从队列路由到HTTP

时间:2019-09-25 14:16:12

标签: apache-camel

有点像骆驼的新手,但是就走了。

我有以下路线:

    onException(HttpOperationFailedException.class)
    .handled(false)
    .setBody().constant("Vi fekk ein feil");

这将从队列中检索消息,并将它们作为JSON发送到HTTP端点。很好

但是如果有错误怎么办?说一个HTTP错误代码400?然后,我希望邮件保留在队列中。我尝试调查不确认该消息,但无法使其正常工作。

我也做了一个异常处理程序

{{1}}

但是消息仍然从队列中消失了。有什么魔术法术可以使骆驼在出现错误时无法确认消息?

1 个答案:

答案 0 :(得分:0)

您必须从队列中消费交易,才能进行回滚。这是在与代理的连接配置上配置的。

看看Camel JMS docs(ActiveMQ组件扩展了JMS组件),尤其是关于cache levelstransacted consumption的部分。

最简单的设置是使用经纪人交易,只需在transacted = true上设置lazyCreateTransactionManager = falseJmsConfiguration。这样就不需要Spring TX管理器。

如果交易使用到位并且HTTP服务器返回错误(基本上,如果骆驼路线中发生异常),骆驼会自动回滚(如果您未捕获到错误) 。