Концентратор событий Azure - несколько типов событий в одном концентраторе событий

2

Я настроил Azure Event Hub. Есть 2 издателя:

  1. Издатель 1 (с политикой отправки)

  2. Издатель 2 (с политикой отправки)

Издатель 1 отправит событие 1, а издатель 2 отправит событие 2. Оба события 1 и событие 2 имеют разный формат.

Вопрос 1: Это означает, что у нас есть разные сообщения в EH - каковы компромиссы с этим подходом? Должен ли я вместо этого создать 2 EH (один для Publisher 1 и другой для Publisher 2)? Какова лучшая практика и философия дизайна?

Если я перейду к подходу, мне придется настроить "Потребитель" с помощью политики прослушивания, чтобы искать эти события и анализировать/преобразовывать эти события и де-сериализовать их.

Вопрос 2: Мне нужно, чтобы 2 потребителя (потребитель 1 и потребитель 2) читали сообщения, предназначенные для них? (Потребитель 1 будет читать только событие 1, а потребитель 2 будет читать только событие 2)?

Теги:
azure
events
stream
azure-eventhub

1 ответ

3

Сценарий 1: один концентратор событий для нескольких типов событий

В этом случае у вас есть несколько вариантов, когда дело доходит до отправки и обработки сообщений:

  1. Просто отправьте сообщения в Event Hub. Напишите процесс потребления, который читает сообщения и на основе типа обрабатывает их по-разному.
  2. Просто отправьте сообщения в Event Hub. Создавайте разные группы потребителей, по одному для каждого типа сообщений. У вас есть 2 процесса, которые читают свою собственную группу потребителей и пропускают сообщения, которые они не могут обрабатывать. (Каждая группа потребителей по существу считывает одни и те же данные, но они могут находиться в разных позициях в потоке данных). Смотрите концентраторы событий Azure и несколько групп пользователей
  3. Отправляйте сообщения в указанный раздел. Например, сообщения типа A отправляются в раздел 1 и сообщения типа B в раздел 2. Это может, однако, повлиять на масштабируемость концентратора событий. Создавать выделенные процессы на (множество) разделов. Затем каждый процесс обрабатывает только сообщения одного типа. См. Https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-programming-guide#partition-key и https://docs.microsoft.com/en-us/azure/event. -hubs/EVENT-концентраторы-программирование-гид # Create-A-разбиение-отправитель

Сценарий 2: Концентратор событий на типы событий

Это легко, просто создайте 2 концентратора событий и 2 процесса потребления. Но вам нужно будет управлять 2-мя хабами событий и учитывая возможности Event Hub, это может быть излишним.

Мой совет

Это зависит от объема данных, но, основываясь на моем опыте, я хотел бы отправить все сообщения в один из хабов событий и один процесс, прочитав это сообщение, и выполнить действие, основанное на типе сообщения, используя некоторый код С#.

  • 0
    Спасибо @ peter-bons - это супер полезно - ты читаешь мои мысли :). Если мы перейдем к сценарию № 1 и варианту 2 ( создание разных групп потребителей для 1 EH ), похоже, мне придется пропустить много сообщений, не предназначенных для группы потребителей. Есть ли здесь компромиссы производительности ? Кроме того, EH основан на единицах пропускной способности (TU) , как это повлияет, если мы пойдем с этой опцией (или любой опцией) ** Будет ли затронуто TU **?
  • 0
    Правильно, вам нужно пропустить сообщения в группе потребителей. О TU, о скольких сообщениях и о каком размере каждого сообщения мы говорим? У нас есть сотни событий в секунду, но мы по-прежнему используем всего 1 TU, так что я бы не беспокоился об этом. Сейчас я не эксперт по TU / биллингу в EH, но мне кажется, что вы не получаете больше данных, ни когда выбираете выбранный вариант.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню