Jakarta ee JMS主题与选择器

Jakarta ee JMS主题与选择器,jakarta-ee,jms,activemq,ibm-mq,Jakarta Ee,Jms,Activemq,Ibm Mq,JMS主题和JMS选择器是完全不同的概念,但消费者只能使用它们来获取消息的子集 在PubSub场景中,使用以下各项过滤消息的利弊是什么: 选项1)在单个主题中发布所有内容,消费者使用JMS选择器 选项2)订阅者订阅一个或多个主题 例如: 我正在发布客户端数据消息,订阅者可能只想获取特定类型的客户端。客户端类型在不同的属性中定义,如“ClientGroup”“ClientSource”“ClientOrgUnit”“ClientSize”等 我该怎么办: 1) 为每种客户端类型创建不同的主题 或

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

在PubSub场景中,使用以下各项过滤消息的利弊是什么:

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

选项2)订阅者订阅一个或多个主题

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

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

2) 在主题上,将每种类型都包含在JMS属性中,并让订阅者使用选择器


谢谢

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

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

在许多情况下,如果在主题树中使用一些数据元素,它们将破坏分类法,但选择时需要这些数据元素。这些都是房地产的候选项目

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


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

这是一个非常好且完整的答案。这里的关键概念是“分类法”与“属性”。谢谢。