JMS 主题与选择器

问题描述 投票:0回答:1

JMS 主题和 JMS 选择器是完全不同的概念,但消费者都可以使用它们来仅获取消息的子集。

在 PubSub 场景中,使用以下方式过滤消息的优点和缺点是什么:

选项 1)在单个主题中发布所有内容,消费者使用 JMS 选择器

选项2)订阅者订阅一个或多个Topic。

示例:
我正在发布客户端数据消息,订阅者可能只想获得特定类型的客户端。客户端类型在不同的属性中定义,例如“ClientGroup”“ClientSource”“ClientOrgUnit”“ClientSize”等

我该怎么办:
1)为每种客户端类型创建不同的主题

2)关于主题,将每种类型放入 JMS 属性中并让订阅者使用选择器?

谢谢你

jakarta-ee jms
1个回答
16
投票

一般来说,基于主题字符串的选择应该会更快。 WebSphere MQ 集群中主题选择的副作用是消息不会分发到不会使用它们的网络节点。在 WMQ V6 中,消息选择器是在客户端实现的,因此应用程序仍然可以获得每条消息,但只能看到符合选择条件的消息。在 WMQ V7 中,QMgr 将执行选择,但消息必须到达 QMgr 才能发生。因此,如果每个客户端都订阅同一主题,那么消息将流向客户端连接的每个 QMgr。但是,如果客户端在主题树中的细粒度点进行订阅,则消息只会发送到已订阅它们的节点。

除了分布之外,主题或属性选择问题也很大程度上受到分类的影响。主题树的设计应根据逻辑数据层次结构提供粒度,但与文件系统不同,不存在可能覆盖树内替代结构的“软链接”。这是一个简单的层次结构。

在许多情况下,有些数据元素如果在主题树中使用会破坏分类法,但选择时需要这些元素。这些是属性的候选者。

主题元素本质上往往更加明确。区域、成本中心、部门编号、分支机构编号等项目往往属于主题树,因为它们用于根据分类业务需求对数据进行分区。

因此,作为一般规则,请使用主题来总结交易。这些通常遵循您已经用来定义业务的现有自然分类法。例如,部门或成本中心是两个常见元素。如果您可以轻松想象按该值细分的报告,那么它可能是一个主题元素。 “显示来自分行 01234 的所有交易”就是一个示例。对作为特定事务属性而不是类别的事物使用属性。这里的例子包括颜色或价格。有可能“显示蓝色项目的所有交易”听起来是错误的,因为蓝色不是分类元素,因此可能不是主题树的良好候选者。 (除非您从事油漆行业!)

© www.soinside.com 2019 - 2024. All rights reserved.