Apache camel 在骆驼中,一条路线只使用一次交换吗?

Apache camel 在骆驼中,一条路线只使用一次交换吗?,apache-camel,Apache Camel,首先是我要做的基本工作 我有一个要从中读取消息的MQ 预处理XML,并在Exchange上设置属性 发出HTTP请求 处理来自http请求和初始exchange上属性的数据 将其放入出站消息队列 我一直在四处寻找,以确认每次从初始MQ读取消息时,都将创建一个新的Exchange。我还没能找到任何明确的说法,但我假设并想知道是否有人能证实或否认这一点 交换只使用一次吗?路由是否会为传入的每条消息创建新的交换 谢谢 编辑:当然,我的搭档会立即在谷歌上搜索并找到答案。是的,它是唯一的,我们在这里找到了

首先是我要做的基本工作

  • 我有一个要从中读取消息的MQ
  • 预处理XML,并在Exchange上设置属性
  • 发出HTTP请求
  • 处理来自http请求和初始exchange上属性的数据
  • 将其放入出站消息队列
  • 我一直在四处寻找,以确认每次从初始MQ读取消息时,都将创建一个新的Exchange。我还没能找到任何明确的说法,但我假设并想知道是否有人能证实或否认这一点

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

    谢谢

    编辑:当然,我的搭档会立即在谷歌上搜索并找到答案。是的,它是唯一的,我们在这里找到了Exchange API上的文档

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

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

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

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