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

骆驼2中的JCachePolicy

祁辰阳
2023-03-14

我想在我的 Camel 2.23.2 路由上实现一些内容缓存。在研究过程中,我遇到了骆驼的JCache组件,根据文档,它应该有一个JCache政策,它将:

JCachePolicy是路由周围的拦截器,它在路由完成后缓存“路由结果”(消息正文)。如果下次使用“类似”Exchange调用路由,则在Exchange上使用缓存的值,而不是执行路由

这基本上正是我正在寻找的。然而,事实证明,该策略仅适用于Camel 3. x及更高版本。所以我的问题是,我如何在Camel 2.23.2中重新创建此功能?

共有1个答案

单于承
2023-03-14

解决方案非常简单。在Camel 3. x分支中,策略包可用,其中只有两个文件。实际策略和处理器。

事实证明,在进行更多的测试之前,这些文件几乎不需要任何调整就可以很好地工作。

在策略上,您需要更改“wrap”和“beforeWrap”方法的方法定义。这些需要routeContext,而不是Route。但从RouteContext移动到路线就足够简单了。在处理器上,主要的变化是为它扩展的“DelegateAsyncProcessor”使用了正确的包。

有了这些变化,一切似乎都如记录的那样工作。我在我的pom中使用了ehcacheSpring启动器,没有任何进一步的更改,让它与ehcache一起工作,因为它是缓存管理器。

还有一点,当您想使用它时,您要缓存的模型需要是可序列化的。

 类似资料:
  • 我正在使用带有Apache骆驼的Spring Boot。我正在从控制器调用路由。一旦路由完成,控制就会返回控制器。我正在VerifyLimitProcess和批准限制处理器中生成响应。如果我没有在路由中提供窃听配置,控制器会按预期检索标头和正文。但如果我在路由中引入窃听,控制器会将标头和正文接收为null。如果有人指出我需要做什么,以便我可以在选择语句中引入两个处理器的窃听配置,即VerifyLi

  • 我有一条小路线,我想使用自定义的重新传递策略来重复向endpoint发送消息,但这种行为非常奇怪。看起来,重新交付政策只是在重复一个错误。我试图将所有交换发送到路由的开头,但策略不起作用,因为每次都在创建: 我做错了什么?当错误发生时,我想以间隔重复我的请求。我的骆驼版本是2.6 日志:

  • 我正在遵循位于Camel MyBatis Integration guide的安装指南。我使用的是Service Mix 5.0.1。我使用了安装spring mybatis的功能,它支持3.2.4。释放我的SqlMapConfig文件只包含有关TypeHandler和TypeAlias的信息。 当我开启服务混合,然后启动我的应用程序,我收到以下堆栈跟踪: ...还有50个 我的Bean定义如下:

  • 我有一个Quarkus应用程序,它使用Apache-Camel并在本地运行良好。当我构建它并尝试运行docker容器时,我收到以下错误: 我的分级依赖关系是 } 当我在IntelliJ终端中使用“夸克斯开发”运行它时,我没有问题。我是否尝试运行容器,但会出现错误。为什么会发生这种情况?我不知道如何解决它。 编辑: 处理HttpException的位置: 处理程序本身: }

  • 我试图弄清楚骆驼的节流概念。我已经看到了骆驼的航线政策,但这适用于许多飞行中的交换。 我的路线如下: 现在我的用例是,我想在这些路由之间传输比如说2000条消息,我知道可以通过来完成。但是,我不得不决定如何在下一个2000条消息被路由时控制它。我只想在接收者队列变为空时路由下2000条消息。 例如,消息从队列路由到。假设2K消息已成功路由,现在我想挂起我的路由,这样它就不会传输更多的消息,直到队列

  • 我是第一次使用Camel。我的试验项目是编写一个应用程序,该应用程序接收HTTP GET请求(使用Jetty)并通过Thrift将请求传递到另一台服务器。然后将收到的答案传递回客户端。(即,如果您愿意,我正在编写超文本传输协议-get请求和Thrift支持的服务器之间的数据交换机或中间件应用程序。) 我有一个完美的非驼峰版本,现在我正在尝试将驼峰等效物组合在一起。目前,我只想将jetty请求写入一