【问题标题】:Message selectors vs Topics for message filtering on Tibco EMS消息选择器与 Tibco EMS 上消息过滤的主题
【发布时间】:2016-11-19 06:10:02
【问题描述】:

我正在开发一个使用 Tibco EMS 主题进行 Pub/Sub 通信的客户端服务器应用程序。

在我们的一个用例中,我们需要在 >200k“主题” 上每分钟发送 几百万条消息

每个客户都对他需要订阅的一小部分主题感兴趣。

问题是,这些实现中哪个更合理:

  1. 通过单个主题发送所有消息,并使用消息选择器按相关主题进行过滤。

  2. 为每个主题创建一个非静态主题,并让客户端订阅相关主题的主题。

【问题讨论】:

  • Tibco EMS 是在服务器端还是在客户端实现消息选择器?如果它们只是客户端,我会避免选择器。

标签: jms tibco-ems jms-topic ems


【解决方案1】:

据传消息选择器会对性能产生轻微影响……这是有道理的。 所以本质上,你必须弄清楚权衡参数: 一方面,您可以从消息选择器中获得多少收益,另一方面,您能否容忍它们的性能成本。

总之,消息架构(您的问题)和容量/性能测试等活动最终将为您提供答案。

关于消息架构,有很多问题要问:

  • 你有多少不同的科目?
  • 该列表的动态性如何(是否经常更改)
    • 子问题:客户如何知道列表已更改?
  • 是否涉及层次结构?

您的问题很大程度上取决于主题的类型和数量,以及它们的性质。

消息选择器在主题相关时非常有用,并且一些订阅者只对子集感兴趣。

示例 1:一个主题报告,带有 JMS 标头“ReportType”。 在这种情况下,一些客户端可能更喜欢擦除所有消息,而其他客户端可能会使用“ReportType=Sales 或 ReportType=Weekly”订阅。 如果主题列表一直在变化,这个例子可能会变得非常粗略......什么程序有兴趣获取所有报告,事件它不知道的事件(他们必须自我描述才有用)

示例 2:如果主题在层次结构中相关... EMS 和 MQ 中的订阅可以是一个特定的分支。想象 3 个主题:REPORTS、REPORTS.WEEKLY 和 REPORTS.SALES 客户可以在 EMS 中晒出 REPORTS.*...这是在没有消息选择器的情况下完成的。

示例 3:非静态主题。在该示例中,您可以随时创建主题......但必须担心很多事情:测试缩放,获取客户端的主题列表,管理主题的弃用,让客户端监听许多主题(非常困难。 .. 多重连接 ???) 等。

祝你的设计好运,

旁注:至于您的目标性能...如果您的容量/性能测试对 EMS 不满意并且不介意,请不要犹豫查看 FTL(另一种 TIBCO 产品)或 RabbitMQ 等产品失去 JMS 功能。 EMS 功能超级强大,可能需要很多时间,但其他产品可以更轻巧,更注重性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多