繁体   English   中英

在 tibco bw 中实现缓存

[英]Implement cache in tibco bw

在 TIBCO BW 中实现缓存

我需要在 TIBCO BW 中实现缓存/内存。 该缓存的内容应该在 BW 项目中可用。

我想要做的是,当我收到一条包含多条发货记录的消息时 - (发货和发货号是唯一的组合)

  1. 如果存在任何这些记录,我需要首先检查缓存。 如果是 - 拒绝整个 XML 如果不是,则将此数据推送到缓存/内存中。

  2. 完成此操作后,我需要向外部系统调用 SOAP 请求回复。

  3. 在另一个项目中,当收到来自外部系统的确认时,我需要检查消息中的记录,找出缓存中的记录并删除它们。

有没有办法做到这一点?

这里的挑战是整个消息没有唯一的键。 每个包含发货/交付组合的记录都是唯一的。

这是我在其中尝试和挑战的内容:1)我想将数据放在一个文件中,并将该文件命名为每条消息的 requestID/Key。 然后在另一个项目中,检查文件并删除它

但是因为我们没有钥匙,我不能那样做。

2)使用共享变量:我相信共享变量在 bw 项目中不可用。 所以,这个选项已经过时了

3)第三个选项是使用EMS队列,将包含记录的消息临时停放在那里。 然后在此搜索,如果记录匹配则拒绝请求。

并且,作为确认(另一个项目),搜索 ems 消息中的记录并删除该特定消息。

对此的任何帮助将不胜感激。

谢谢

为什么不使用数据库或文件来存储记录? 因为当你停止或重启或者appnode出现问题时,缓存会被清除,你将无法检索未处理的记录。

第四个选项是使用 tibco 活动“Java 全局实例”在 Java 中实现缓存。

“Java 全局实例共享配置资源允许您指定一个 Java 对象,该对象可以在 Java 虚拟机 (JVM) 中的所有流程实例之间共享。当流程引擎启动时,将构建指定 Java 类的一个实例。”

您可以在 Java 中搜索大量缓存实现,例如https://crunchify.com/how-to-create-a-simple-in-memory-cache-in-java-lightweight-cache/

关于您的声明:“这里的挑战是整个消息没有唯一的键。每条带有发货/交付组合的记录都是唯一的”

因此,您确实拥有唯一的键 - 装运/交货的组合是唯一的。 如果记录大小不是太大,您可以“按原样”使用记录作为键,或者为每条记录创建唯一的散列,如果键大小有问题,则将其用作键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM