Можно ли использовать домен сетки событий Azure для отправки событий в несколько тем? - PullRequest
0 голосов
/ 05 февраля 2019

Я провел следующий эксперимент, и он работает:

  • Сконфигурировал домен сетки событий Azure с двумя темами.
  • Опубликовал событие в домене с информацией о теме 1.
  • Событие успешно доставлено в тему 1 (а не в тему 2), как ожидалось.

Вопросы:

  1. Можно ли отправить событиев домен, чтобы его можно было доставить в несколько тем (в приведенном выше случае тема 1 и тема 2)?
  2. Если это возможно, как мне это сделать?
  3. Если этосегодня невозможно, будет ли это доступно позже?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Можно ли отправить событие в домен, чтобы оно могло быть доставлено в несколько тем (в приведенном выше случае тема 1 и тема 2)?

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

Если вы хотите, чтобы другая группа пользователей могла подписываться на события из темы 1 против темы 2, тогда разбивание на две темы имеет смысл.Если одни и те же пользователи могут иметь доступ к одному и тому же набору событий, то им обычно может быть предоставлен доступ к одной и той же теме.

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

Если это возможно, как мне это сделать?

Если вы хотите, чтобы одно и то же событие было доступно по двум различным темам, вам придетсяОпубликуйте событие дважды в Домене, один раз для каждой темы.

Второй вариант, в зависимости от вашего варианта использования, - это наличие подписок на события в стиле «пожарного рукава».Каждый домен также может поддерживать ограниченный набор подписок на события в области домена (подписаться на все события в домене).Это не публикует обе темы, но может быть альтернативной архитектурой в зависимости от ваших потребностей.

Если сегодня это невозможно, будет ли это доступно позже?

TBD.У вас есть пример использования, который заблокирован?

0 голосов
/ 05 февраля 2019

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

Другими словами, если нет интереса (нет подписки) для этой темы домена, тема домена не существует в Домене событий, и сообщение о событии, опубликованное для этой темы домена, перенаправит его в доменподписчик (если есть подписка на домен).

В вашем случае вы создали две подписки на домен событий topic1 и topic2.Если эти подписки были созданы впервые для этих тем, домен автоматически создаст эти темы (topic1, topic2) в ресурсе домена событий.

Предварительный просмотр AEG Event Domain поддерживает отправку массива событий в разделы домена событий.В следующем фрагменте экрана показан пример событий с использованием схемы ввода по умолчанию (например, EventGridSchema):

[
 {
   "topic": "topic1",
   "id": "12345",
   "subject": "/myapp/vehicles/motorcycles",
   "eventType": "recordInserted",
   "eventTime": "2019-02-05T16:57:16.5734282Z",
   "data": {
     "make": "Ducati",
     "model": "Monster"
     }
 },
 {
   "topic": "topic2",
   "id": "67890",
   "subject": "/myapp/vehicles/motorcycles",
   "eventType": "recordInserted",
   "eventTime": "2019-02-05T16:57:16.5734282Z",
   "data": {
     "make": "Ducati",
     "model": "Monster"
     }
 }
]

Как вы можете видеть, указанное выше каждое событие (в этой EventGridSchema) отображает источник интереса в доментема.Особый случай - когда мы использовали CustomInputSchema, где это отображение может быть настроено (например, значение по умолчанию и / или sourceField).

Ответ на ваш вопрос о «тематической трансляции» в AEG Pub / Sub Model - НЕТ. Модель AEG поддерживает подписку только на одну тему .Было бы хорошо подписаться на несколько тем в домене событий, например, используя расширенную фильтрацию с ключом = тема, но это не работает.

Подписка на домен событий для шаблона разветвления:

Особым случаем может быть подписка на домен событий и использование расширенной фильтрации, см. Следующий пример:

 "advancedFilters": [
      {
        "values": [
          "topics/topic1",
          "topics/topic2"
        ],
        "operatorType": "StringEndsWith",
        "key": "topic"
      }

На основе описанного выше «обходного пути» вы можете создать несколько групп разветвления (широковещания) в домене событий.Максимальное количество подписок на события области действия домена составляет 50 при предварительном просмотре.

Домены событий - это отличная функция в модели событий AEG, например, в теме уровня домена есть встроенная агрегация событий (шаблон Fan-In).Если событие источника интереса имеет неизвестную тему домена (подписка отсутствует), событие может быть перехвачено подписчиком домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...