【问题标题】:Load balancing Tibco EMS topic subscribers负载均衡 Tibco EMS 主题订阅者
【发布时间】:2013-05-23 13:18:59
【问题描述】:

我有一个 Tibco EMS 主题订阅者,我需要在不同实例之间进行负载平衡。每个发布到主题的消息都需要由每个订阅者负载平衡组的一个(且只有一个)实例接收。

仅使用全局主题和平衡的 EMS 连接 (tcp://localhost:7222|tcp://localhost:7224) 会导致每个订阅者负载平衡组的所有实例都收到相同的消息,从而产生重复消息。

您知道负载平衡主题订阅者的任何替代方案吗?

【问题讨论】:

  • 您可以使用专属属性

标签: jms load-balancing tibco tibco-ems jms-topic


【解决方案1】:

你可以:

A) 将主题桥接到队列并重新配置订阅者以从队列中读取。队列的行为与主题不同,因为消息仅由一个订阅者获取,而不是由所有订阅者获取。

B) 在主题上创建多个持久订阅者,并使用选择器在持久订阅之间划分消息。例如。如果消息具有按顺序递增的属性“id”:

create durable topic DURABLENAME1 selector="(id - 2 * (id / 2)) = 0"
create durable topic DURABLENAME2 selector="(id - 2 * (id / 2)) = 1"

选择器只是一个模数,所以一半的消息会在一个持久化消息上,一半在另一个上。

【讨论】:

  • 只是想确保我对选项 A 的理解是正确的。Publisher(Queue) -->(Queue)Subscriber(Topic)Publisher --> Subscribers(topic) 是否正确?
【解决方案2】:

在 EMS 8.0 中添加了新概念共享订阅,只有一个订阅接收具有相同订阅名称的消息,通过 EMS 用户指南文档,它可能会对您有所帮助。

【讨论】:

    【解决方案3】:

    虽然前面的两个答案都有效,但最自然的方法是根本不使用主题。

    使用队列而不是 pf 主题完成整个工作(以循环方式进行负载平衡)。

    【讨论】:

    • 有多个订阅者(每个都有一个 lb 配置)应该收到相同的发布消息
    • 好的,如果您低于 TIBCO EMS 8,请将主题桥接到每个订户组的队列,并让组在队列中“循环”。如果您已经在使用 TIBCO EMS 8(如 ramyasree 所述),您可以考虑使用 JMS 2.0 功能(共享订阅)
    • 我们可以对主题的发布者进行负载均衡吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多