我有一个从JMS队列读取项目并将其写入数据库的路径。
我已经阅读了关于ApacheCamelJMS组件的文档,但我没有得到我的问题的确切和明确的答案,即“如果路由中出现异常,JMS消费者是否会重新插入项目或解锁JMS队列中的消息?”。
谢谢
阿里
这还取决于您如何配置路线。为了让消息返回队列,您需要将组件配置为事务性的。路由中的异常处理需要让异常冒泡,如果将“handled”设置为true,异常将不会冒泡,并且您将丢失消息。
正如其他答案中所提到的,有几件事需要记住:
>
Camel只提供了一个javax。jms。MessageListener impl到Spring。它的Spring的DMLC(DefaultMessageListenerContainer)和相关类正在执行所有繁重的工作。
骆驼路由的定义实际上注册了一个侦听器实例,当DMLC稍后从JMS代理接收消息时,它将在try-catch块中被调用。这意味着您的消费者路线总是在Spring控制的上下文中调用。
如果路由中存在未处理的错误,Spring将捕获它们并“回滚”。如果路由成功完成,Spring将“提交”JMS消息,这意味着msg将从代理队列中删除。
如果你想详细了解下面发生的事情,请阅读以下帖子:http://krasnikov-tube.blogspot.sg/2014/02/where-apache-camel-meets-spring-jms.html
希望这会有所帮助。
您可以在这里阅读交易:http://camel.apache.org/transactional-client.html
处于事务处理模式的JMS使用者会将消息保留在队列中,直到发送被提交。
如果TX执行回滚,那么JMS代理将再次重新传递消息。您可以配置JMS代理执行此操作X次,如果仍然失败,则将消息移动到死信队列。
这是JMS代理特定的开箱即用的配置方式等。对于Apache ActiveMQ,请参见以下详细信息:http://activemq.apache.org/message-redelivery-and-dlq-handling.html
如果你有一本《骆驼行动手册》,那么第9章将详细介绍这本书。图9.6说明了所有这些是如何工作的。
我在JPA上遇到了以下问题,但这可能更像是一个关于骆驼的概念问题。 我需要一个基于cron的石英消费者。但如果触发了,我想选择JPA组件作为第一步。 但是如果我用“to”调用JPA组件,那么它被用作生产者,而不是消费者。我可以以某种方式使用JPA组件来处理这个问题吗,或者我必须遵循服务激活器(基于bean的)逻辑并将JPA组件留在后面? 提前谢谢你,葛格利
我对骆驼生产商有很好的了解,但我不能对各种骆驼消费者保持清醒的头脑。特别是事件驱动消费者和轮询消费者,camel如何知道为这些消费者调用回调? 消费者的一般流量是多少?
我的主要问题是:在JPA实体类内的方法上,除了@Consumed注释之外,还有其他选择吗? 我问这个问题是因为我真的想把我的JPA模型(例如我的所有实体)具体化,以便能够在使用相同数据库的其他项目之间共享。此外,我不想在我的子项目中出现一些骆驼依赖,这意味着要删除@Consumed注释。我基本上有这样一条路线: 我尝试了不同的解决方案: 在我的camel项目中,使用@Consumed方法扩展子模块
我在为 端口设置 消费者以捕获消息时遇到问题。我的: 申请开始: 并且<code>514</code>端口已打开但未侦听 我可以在tcpdump中看到,tcpdump-I eth1-nn-A-s 0端口514和udp正确发送和接收消息。 有人能告诉我我做错了什么吗?
我一直在尝试为Spring引导Kafka骆驼Avro消费者寻找示例代码,但没有运气。我在以下URL找到了Spring Camel Kafka消费者和生产者示例: https://thysmichels.com/2015/09/04/apache-camel-kafka-spring-integration/ 我的具体问题是,一旦我的bean从Avro模式创建,并且我有了POJO类,我如何将上面的c
如有任何帮助,不胜感激。