Java ApacheCamel-在处理器内设置值

Java ApacheCamel-在处理器内设置值,java,apache-camel,Java,Apache Camel,我不知道有多少人有机会与骆驼处理器打交道。因此,这是我关注的问题: 我正在获取一些信息并将其发送给处理器。从处理器,它通过服务进行数据库调用并插入记录。我正在使用POJO,并通过exchange对象在处理器中设置模型中的值。我一点也不面临任何问题,但处理器并不是用来设置列表或任何其他结构中的值的。它只需对exchange对象执行一些处理并将其传递,这主要是因为可能存在多个线程可以调用同一处理器的情况 这是我想知道的: 在Camel中,有没有其他替代处理器,我可以在模型上进行这种设置。例如:窃听、

我不知道有多少人有机会与骆驼处理器打交道。因此,这是我关注的问题:

我正在获取一些信息并将其发送给处理器。从处理器,它通过服务进行数据库调用并插入记录。我正在使用POJO,并通过exchange对象在处理器中设置模型中的值。我一点也不面临任何问题,但处理器并不是用来设置列表或任何其他结构中的值的。它只需对exchange对象执行一些处理并将其传递,这主要是因为可能存在多个线程可以调用同一处理器的情况

这是我想知道的:

  • 在Camel中,有没有其他替代处理器,我可以在模型上进行这种设置。例如:窃听、拦截器等
  • 如果不是,还有什么办法

  • 处理器
    是单例的,因此不应用于存储任何类型的状态

    一些选择

    • 将状态信息存储在
      交换
      属性或正文标题中

    • 处理器
      替换为可以管理范围(原型等)的
      Bean

    • 对非线程安全引用使用
      ThreadLocal
      变量


    这句话不正确:它只需对exchange对象执行一些处理并将其传递,主要是因为可能存在多个线程可以调用同一处理器的情况。你从哪里得到这个信息的?我不确定你的问题。但是您可以创建一个bean并在该bean中调用一个方法,并且该方法可以执行您想要的db调用。这正是我想要的。我对ThreadLocal做了一些研究,但有人说它没有真正的帮助?ThreadLocal对请求范围的变量没有帮助(因为它们是线程范围的),但有助于减少非线程安全资源(SimpleDataFormat等)