【问题标题】:Is an exchange only used once by a route in Camel?交换是否仅在骆驼路线中使用一次?
【发布时间】:2012-01-20 15:20:42
【问题描述】:

首先是我正在尝试做的基本概述

  1. 我有一个 MQ,我想从中读取消息
  2. 预处理 XML,并在 Exchange 上设置属性
  3. 发出 HTTP 请求
  4. 处理来自 http 请求和初始交换属性的数据
  5. 将其放在出站消息队列中

我一直在环顾四周,以确认每次从初始 MQ 中读取消息时都会创建一个新的 Exchange。我无法找到任何明确说明的内容,但我假设并且想知道是否有人可以确认或否认这种情况。

交换只使用一次吗?路由是否会为每条传入的消息创建一个新的交换?

谢谢!

编辑:当然,我的一对然后立即谷歌搜索并找到答案。是的,它是独一无二的,我们在这里找到了有关 Exchange API 的文档http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    在大多数情况下,为路由的每个消费者线程创建一个Exchange。一个例外(我知道)是使用“直接”端点,它将重用现有的 Exchange(如果请求中已经存在)...

    例如,这 2 条路由链接在一起(通过直接)。第一个路由将创建一个新的 Exchange 并将其传递给第二个路由(请参阅记录的 exchangeId)...

    from("direct:route1").log("route1.exchangeId=${exchangeId}").to("direct:route2");
    from("direct:route2").log("route2.exchangeId=${exchangeId}");
    

    但是,如果您要将它们与任何其他组件(seda、vm、activemq 等)链接在一起,那么将为第二条路由创建一个新的 Exchange。

    from("seda:route1").log("route1.exchangeId=${exchangeId}").to("seda:route2");
    from("seda:route2").log("route2.exchangeId=${exchangeId}");
    

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多