【问题标题】:How and where to check certain Apache Camel settings如何以及在何处检查某些 Apache Camel 设置
【发布时间】:2013-03-12 09:12:40
【问题描述】:

我有一个基于 Camel 的应用程序,它使用以下路由向 ActiveMQ 实例发布/订阅消息/从 ActiveMQ 实例订阅消息:

<from uri="activemq:myQueue" />

或:

<to uri="activemq:someOtherQueue" />

我正在尝试确定我是否无意中将我的应用设置为“同步模式”,这种情况发生在以下任一情况下:

  • ActiveMQConnectionFactory#setAlwaysSyncSend 是真的;或
  • MessageProducer”设置为“持久”

相信,没有骆驼,我通常会手动设置这些属性。在这里介绍 Camel 作为 ActiveMQ 客户端,不确定如何/去哪里找到这些属性的值。有任何想法吗?提前致谢。

【问题讨论】:

    标签: java jms activemq apache-camel


    【解决方案1】:

    您可以在添加组件时通过在传递给 ActiveMQ 组件的连接 URI 上设置这些值来配置这些值。 Camel 网站上的 documentation 向您展示了它是如何完成的。

    ActiveMQ 客户端通过在某些情况下选择使用异步而不是同步来进行一些自己的优化以提高发送性能。这是documented here,值得一读。

    因此,您可以在通过如下代码添加组件时对其进行配置:

    camelContext.addComponent("activemq", activeMQComponent("tcp://localhost:61616?jms.alwaysSyncSend=true"));
    

    ActiveMQConnectionFactory 配置选项详细记录在here,适用于传输的选项是here

    【讨论】:

    • 感谢@Tim Bish (+1) - 嗯,我现在似乎有所收获。我看到 ActiveMQ 组件没有添加任何新选项,并且所有 JMS options 都适用于 ActiveMQ。因此,查看这些 JMS 选项,我看到一些 有点 类似于 alwaysSyncSend(即 asyncConsumerasyncStartListenerasyncStopListener),但我没有看到任何类似于MessageProducer。有任何想法吗?我觉得我离我很近,但我仍然很难在这里看到“树林中的森林”。再次感谢!
    • 此外,asyncConsumer(听起来alwaysSyncSend)默认为false。那么,如果这是与alwaysSyncSend 对应的属性,而我没有明确将其设置为true,那么这是否意味着我的客户端配置为“同步模式”?
    • 您能否稍微澄清一下您的问题,以了解您真正想要做什么?或者什么没有按照你想要的方式工作?我很难理解你的问题,很难形成一个好的答案。阅读我在 AMQ 客户端上添加的链接以及它在某些情况下使用异步发送。大多数这些东西你通常不需要乱搞。
    • Camel JMS deliveryPersistent 选项控制MessageProducer DeliveryMode,默认为true。与 ActiveMQConnectionFactory alwaysSyncSend 没有关联,因为它是特定于 ActiveMQ 的,并且在添加时在 ActiveMQ Camel 组件 URI 上设置。该默认值为 false。
    • ActiveMQ Camel 组件页面表明您可以在 BrokerUri 上为组件设置属性。如果您点击 Broker URI 页面的链接,您会发现有关传输和 ActiveMQConnectionFactory 的各种 URI 设置的文档。如果您认为需要更多文档,请随时在 AMQ 邮件列表中贡献或讨论。
    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多