【问题标题】:Get all messages from topic获取主题的所有消息
【发布时间】:2017-02-22 03:03:23
【问题描述】:

如何从 Tibco 中的 JMS 主题获取所有消息?

我知道我可以使用主题订阅者,但它不能完全满足我的需求。我想每天只启动一次进程,它将读取来自主题的所有消息并处理它们。我不能在同一个进程中同时拥有计时器和主题订阅者。

我尝试使用“等待 JMS 主题消息”,但无论主题中有多少条消息,它似乎都只收到一条消息。

【问题讨论】:

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


    【解决方案1】:

    我会尝试不同的方向。您可以使用 2 个单独的进程来实现这一点。

    一个进程,一个接收所有消息的主题订阅者(具有持久性)。默认情况下应该禁用此进程启动器(因此侦听器不活动)。

    第二个进程是一个计时器,它将通过 Hawk(引擎命令)激活第一个进程。所以每次订阅者被激活时,它都会开始处理事件。

    这里有问题的部分是主题订阅者在完成后停用。为此,您需要一个单独的逻辑,何时停用订阅者。当订阅者没有更多消息时,这也可以通过单独的计时器或触发的某些 Hawk Rule 来完成。

    【讨论】:

      【解决方案2】:

      我认为最好的解决方案是将 JMS 主题连接到队列并在流程开始时使用“JMS 队列接收器”活动。

      每天启动一次实例后,它将连接并处理队列中的所有消息。

      【讨论】:

      • 我正在考虑这个解决方案,但我想避免桥接。
      • 如果只有一个topic和一个queue,创建一个单独的bridge应该问题不大。如果有多个主题和队列,您可以批量创建它们。我知道桥梁的声誉不佳(出于某种原因),但它们通常不会造成任何问题。
      • 我选择了不同的做事方式,但你的回答似乎是最好的,所以我接受了。
      【解决方案3】:

      一个更自然的解决方案(如果可以实现的话)是只实现一个主题订阅者(如果主题桥接到队列,则实现一个队列订阅者)并让 BusinessWorks 引擎在消息发布时生成作业实例。

      与从主题或队列中获取所有消息相比,这允许更均匀地分配工作负载。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-07
        • 2021-10-26
        • 2021-03-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2016-11-07
        相关资源
        最近更新 更多