当前位置: 首页 > 知识库问答 >
问题:

从处理器内部设置骆驼交换属性

庄嘉
2023-03-14

这里是Java 8和Camel 2.19.x。我有以下骆驼路线:

<route id="widgetProcessing">
  <from uri="activemq:inputQueue"/>
  <to uri="{{widgetFetcher}}"/>
</route>

WidgetFetcher处理器:

@Component("widgetFetcher")
public class WidgetFetcher {
  private WidgetDao widgetDao;

  public WidgetFetcher(WidgetDao widgetDao) {
    this.widgetDao = widgetDao;
  }

  public Widget getWidgetToProcess() {
    // get the next widget id from the database
    final Integer firstWidgetId = widgetDao.getFirstSubmittedWidgetId();

    // Do lots of stuff with 'firstWidgetId' down here...
  }
}
<route id="widgetProcessing">
  <from uri="activemq:inputQueue"/>

  <setProperty propertyName="fizzId">
    <constant>null</constant>
  </setProperty>

  <to uri="{{widgetFetcher}}"/>

  <log message="fizzId = ${property[fizzId]}" loggingLevel="ERROR"/>
</route>
public Widget getWidgetToProcess(@ExchangeProperty("fizzId") final String fizzId) {
  // get the next widget id from the database
  final Integer firstWidgetId = widgetDao.getFirstSubmittedWidgetId();

  if (someMethodReturnsTrue()) {
    // Does this actually get saved outside the 
    log.info("About to update fizzId...")
    fizzId = UUID.randomUUID().toString();
  }

  // Do lots of stuff with 'firstWidgetId' down here...
}
About to update fizzId...
fizzId = null

共有1个答案

段阳夏
2023-03-14

不是将属性传入处理器,而是接受交换--然后就可以在交换上设置属性。

 类似资料:
  • 我正在设置路由1中骆驼交换的属性。我正在尝试在拆分器内的第二条路由中更新该属性。但是在拆分器的第二次迭代中,我得到的是我在路由1中设置的原始值,而不是新的更新值。下面是我正在尝试的示例。。 豆子里面: 为什么不更新属性?甚至我也试着在标题中设置。同样的结果。非常感谢。

  • 我已经创建了一个服务代理。 代理(请求类型为)和实际服务(请求类型。)之间有一个处理器。 进入< code > process(Exchange Exchange)方法的交换体属于< code>TypeA。 我能够使用下面的代码行访问数据 现在,我想将此信息更改为。 我使用下面的代码添加主体。 我得到了 现在,我想使用调用真正的服务,它来自。 我尝试进入处理器,但出现以下异常 真正的Web服务没有

  • 我正在尝试从目录中选取一个文件,拆分一个文件,并将每一个拆分行添加到ActiveMQ中。我在这个过程中遇到了异常处理的问题。假设目录中的文件是一个二进制文件(可执行文件),那么splitter会显示org.apache.camel.runtimeCamelException和java.nio.charset.MalFormedInputException异常。如果出现这种情况,那么我需要捕获这些异

  • 问题内容: 我正在开发非OSGI应用程序,我需要更新骆驼路线中使用的某些属性的值(已加载BridgePropertyPlaceHolder)。所以我认为: 要使用酷炫的管理控制台Hawtio,以便使用JMX更新骆驼 创建一个将更新属性..的JMX MBean。 我成功创建了MBean操作并使用JMX对其进行了调用,但是我不知道如何更新依赖于这些属性的骆驼路线。 有没有一种方法可以从外部更新骆驼上下

  • 我需要在Exchange对象的属性上传递一些参数。据我所知和阅读,最好在交换属性上创建我的参数,因为消息的标头可以在路由期间更改。Camel正在从一个路由到另一个路由创建新的交换,但不保留我的任何参数的历史记录。 现在一些上下文:我正在使用部署在WebLogic 12C上的Camel(2.16.1) 相关的Maven部分: 骆驼上下文: 如您所见,我使用了一个名为TestProcess的类来影响E

  • 我有一条骆驼路线,如下所示。 bean方法顾名思义,分别将body设置为“Hello”和“World”。 我还设置了onException子句,如下所示: 假设,我将一条消息放在队列“开始”上,正文为“测试消息”。在第一个杜米豆中成功处理后,我在第二个杜米豆中抛出一个运行时异常。我希望看到实际的消息或(原始消息内容完好无损,即“测试消息”)被发送到我的死信队列。 但是,死信队列上的消息内容是“He