Тема JMS против селектора

#jakarta-ee #jms #activemq #ibm-mq

#джакарта-ee #jms #activemq #ibm-mq

Вопрос:

Тема JMS и селектор JMS — это совершенно разные концепции, но они оба могут использоваться потребителем для получения только подмножества сообщений.

в сценарии PubSub каковы плюсы и минусы фильтрации сообщений с использованием:

Вариант 1) Публикация всего в одной теме, а потребители используют JMS Selector

Вариант 2) Подписчик подписывается на одну или несколько тем.

Пример:
Я публикую сообщение с данными клиента, и Подписчик может захотеть получить только определенный тип клиента. Тип клиента определяется в другом атрибуте, таком как ‘ClientGroup’, ‘ClientSource’, ‘ClientOrgUnit’, ‘ClientSize’ и т. Д

Что я должен сделать:
1) Создать другую тему для каждого типа клиента
ИЛИ
2) По теме и иметь каждый тип в свойстве JMS и разрешить Подписчику использовать Селекторы?

Спасибо

Ответ №1:

В общем, выбор на основе строки темы должен быть быстрее. Побочным эффектом выбора темы в кластере WebSphere MQ является то, что сообщения не распространяются на сетевые узлы, которые не будут их использовать. В WMQ V6 селекторы сообщений реализованы на клиенте, поэтому приложение по-прежнему получает каждое сообщение, но видит только те, которые соответствуют критериям выбора. В WMQ V7 QMgr выполнит выбор, но для этого сообщение должно попасть в QMgr. Таким образом, если каждый клиент подписан на одну и ту же тему, то сообщения будут поступать на каждый QMgr, к которому подключен клиент. Но если клиенты подписываются в детализированных точках дерева тем, сообщения будут отправляться только на узлы, где на них что-то подписалось.

Помимо распределения, на вопрос выбора темы или свойства большое влияние оказывает таксономия. Дизайн дерева тем должен обеспечивать детализацию в соответствии с логической иерархией данных, но, в отличие от файловой системы, в нем отсутствуют «программные ссылки», позволяющие накладывать альтернативные структуры внутри дерева. Это простая иерархия.

Во многих случаях существуют элементы данных, которые при использовании в дереве тем нарушили бы таксономию, и все же они необходимы для выбора. Это кандидаты на свойства.

Элементы темы, как правило, более категоричны по своей природе. Такие элементы, как регион, центр затрат, номер отдела, номер филиала, как правило, попадают в деревья тем, поскольку они служат для разделения данных в соответствии с категориальными бизнес-требованиями.

Итак, как правило, используйте темы для тех вещей, с помощью которых вы могли бы суммировать транзакции. Обычно они соответствуют существующим естественным таксономиям, которые вы уже используете для определения своего бизнеса. Например, отдел или центр затрат — это два общих элемента. Если вы можете легко представить отчет с разбивкой по этому значению, это может быть элемент темы. «Покажите мне все транзакции из филиала 01234» — это пример. Используйте свойства для объектов, которые являются атрибутами конкретных транзакций, а не категорий. Примерами здесь могут быть цвет или цена. Скорее всего, «покажите мне все транзакции для синих элементов» звучит неправильно, потому что синий не является категориальным элементом и поэтому, вероятно, не является хорошим кандидатом для дерева тем. (Если только вы не занимаетесь рисованием!)

Комментарии:

1. Это очень хороший и полный ответ. Ключевым понятием здесь является «таксономия» против «атрибутов». Большое спасибо.