在不重新启动整个实例的情况下更新驼峰 SAP 缓存



我在RedHat Fuse中使用RedHat的camel-SAP组件通过SAP RFC调用模块。每次调整模块的结构时,都必须重新启动 Fuse 实例以缓存更新的 SAP 存储库。有没有办法使用 SAP 存储库更新缓存而无需重新启动实例?

简短的回答是否定的。

更改 SAP 系统中 RFC 的结构是一项重大的系统更改。该组件旨在与稳定的生产SAP系统集成,并缓存SAP元数据以提高效率。我假设您必须在开发环境中修改 RFC。如果是这种情况,则需要重新启动任何连接的 Fuse 容器,因为您已更改 SAP 系统。

这个camel-sap组件似乎使用SAP Java Connector(JCo(和Java IDoc类库(JIDocLIb(。

出于性能原因,这些库将 RFC 和 IDoc 所需的元数据永久存储在内存中。但这些库也提供了用于从缓存中删除元数据或清除整个元数据存储库的 API。因此,可以在使用 camel-sap 组件中以某种方式实现所需的功能,或者如果您可以直接访问使用的 SAP 连接器 API,则可以自行在 Java 中实现此功能。

不可能的是,元数据缓存将在ABAP后端修改后自动清除或失效。但由于我不知道骆驼汁,我不能在这里进一步提供帮助。

我用RedHat打开了支持票证,并接受了添加清除JCo存储库缓存和数据层功能的建议。@Punkhorn已创建并实现了任务。谢谢!

支持票证指出,从版本 7.2 开始,此功能将包含在 Fuse 中。因此,如果您使用此版本或更高版本,则可以按如下方式清除缓存:

<to uri="sap-clear-cache" />

最新更新