Фильтрация данных перед отправкой подписчику (NServiceBus) - PullRequest
1 голос
/ 29 мая 2011

У меня много клиентов, которым необходимо получать уведомления при добавлении новых данных в одну из наших таблиц БД. Я думаю о создании службы, которая проверяет таблицу каждые X секунд и уведомляет клиентов, если какие-либо новые данные существуют. Проблема в том, что каждый клиент имеет разные разрешения и не может видеть всю информацию. Я думал об использовании чего-то вроде NServiceBus для публикации сообщения с новой информацией, но мне нужно отфильтровать информацию в соответствии с разрешениями каждого клиента перед его отправкой. Фильтрацию необходимо выполнить перед отправкой информации (я не могу выполнять фильтрацию на стороне клиента).

Есть ли встроенная поддержка для этого в NServiceBus?

Если нет, как я могу достичь этой цели?

EDIT: Вот пример, который я написал в комментарии ниже: скажи, у меня есть книжная библиотека. Каждый клиент заинтересован в получении немедленного уведомления о новых книгах, добавленных в библиотеку, но каждому клиенту разрешено получать уведомления только об определенном жанре. Система должна отправить уведомление всем клиентам, содержащим информацию о новых книгах, но каждый клиент должен быть уведомлен только о своем конкретном жанре. Из соображений безопасности я не могу отфильтровать данные в клиенте.

Спасибо.

1 Ответ

2 голосов
/ 01 июня 2011

Потенциальным вариантом будет позволить только определенным клиентам подписываться на жанры, которые им разрешено просматривать. NSB предоставляет интерфейс IAuthorizeSubscription, чтобы вы могли определить, кому разрешено подписываться на сообщение. Разделив сообщения по жанрам, вы можете разрешить / запретить подписку на эти жанры с помощью интерфейса авторизации.

...