1

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

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

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

4

3 回答 3

1

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

于 2013-08-13T00:53:10.033 回答
1

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

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

于 2013-08-18T18:55:14.797 回答
1

你可以:

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

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

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

选择器只是一个模数,因此一半的消息将在一个持久消息上进行,一半在另一个上。

于 2013-05-29T11:31:39.737 回答