在 apache camel 上下文中存储状态的最佳方式

Best way to store state in an apache camel context

我需要保留一个字符串值,该值每小时更改一次,并由路由获取以供其他路由使用。我正在使用 Spring XML DSL。

我已经让它工作得很好,但它看起来很笨拙。我有一个 java class 和一个 setter 和一个 getter 来包装字符串,我将它设置为:

<to uri="bean:store?method=setValue"/>

然后通过另一条路线将其放回体内:

<to uri="bean:store?method=getValue"/>

是否有一种纯粹的 Spring 方法可以在 xml 中执行此操作而无需定制 java class?

您有多种选择:

  1. 使用缓存组件,如 Apache Ignite、EhCache 等。尽管对于像您这样的简单场景,这矫枉过正。不推荐。
  2. 使用 JDK AtomicReference 作为您的 bean,而不是创建一个专门用于存储的 class。
    • 调用set方法来存储一个值。
    • 调用 get 恢复值。

显然,您不会删除通往 store/fetch 值的路径中的步骤,但您可以取消自定义 class.