【问题标题】:Implement cache in tibco bw在 tibco bw 中实现缓存
【发布时间】:2019-07-10 22:06:03
【问题描述】:

在 TIBCO BW 中实现缓存

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

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

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

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

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

有什么办法吗?

这里的挑战是整条消息没有唯一的密钥。每条装运/交货组合的记录都是唯一的。

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

但由于我们没有钥匙,我不能那样做。

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

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

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

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

谢谢

【问题讨论】:

    标签: caching tibco tibco-ems tibco-business-works


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      关于您的陈述: "这里的挑战是整条消息没有唯一的键。每条记录与发货/交货组合都是唯一的"

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-06
        • 2013-02-13
        • 2012-08-03
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多