Отправка сообщений клиентам с помощью служебной шины Azure - темы

Используя служебную шину Azure - темы, я хочу реализовать решение, в котором сообщения отправляются / уведомляются конечным потребителям после того, как производитель отправляет сообщение в тему (например, очереди).

Я понимаю, что темы работают как модель Pub / Sub, в которой подписчикам необходимо читать сообщения из подписок. Но я ищу обходной путь, который работает примерно так же, как Queue (где он запускает веб-задание / службу при получении любого сообщения).

У меня есть несколько мыслей вроде 1. Использование автоматической пересылки в подписках для пересылки сообщений в очереди, но опять же, я думаю, если это убивает цель темы 2. Запланировать задание для обработки этих запросов, но опять же, я думаю, если я задерживаю процесс

Во-первых, я хочу знать, подходит ли тема служебной шины? Затем, если возможно, найти обходной путь, какой способ лучше / лучше?

PS: мне нужно отправлять сообщения, в которых есть информация - я думаю, я не могу использовать реле


person sajid irfan    schedule 29.04.2019    source источник
comment
Вы видели этот пример? docs.microsoft.com/en-us/azure/service-bus-messaging/   -  person Norcino    schedule 29.04.2019
comment
Вы можете объяснить, чего именно вы пытаетесь достичь. topic / sub может делать все, что и вы, с очередями. вы также можете запускать задания с помощью pub / sub.   -  person Imran Arshad    schedule 29.04.2019
comment
@ImranArshad, у меня есть две независимые задачи: 1. Отправить пользователям уведомление по электронной почте. 2. Отправить уведомление пользователю в его мобильном приложении. Одна важная вещь здесь заключается в том, что это должно завершиться в течение минуты, поэтому я не думаю, что планировщик подходит в этом случае. По сути, я хочу иметь слушателя для моей темы / подписки / подписок   -  person sajid irfan    schedule 30.04.2019
comment
да, это может быть достигнуто с помощью вашего пользовательского приложения, подписанного на тему / подписку, или, что еще лучше, вы можете использовать бессерверные функции. какие технологии или услуги вы используете? Я могу лучше объяснить, если это лазурь и ядро ​​.net   -  person Imran Arshad    schedule 30.04.2019
comment
@ImranArshad, да, я хочу использовать ядро ​​Azure и .NET. Если бы использовались функции Azure, это было бы идеально.   -  person sajid irfan    schedule 01.05.2019
comment
@sajid Я объяснил в ответе.   -  person Imran Arshad    schedule 02.05.2019


Ответы (3)


Чтобы было ясно, очереди и темы в служебной шине разные. Как вы отметили, темы полезны в сценариях публикации / подписки.

Поскольку вы ищете что-то, что запускается, функции Azure могут быть тем, что вам нужно.

Функции Azure поддерживают привязки триггеров и выходных данных для очередей и тем служебной шины.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus

person William Xifaras    schedule 29.04.2019

Я думаю, что @William прав, вы можете использовать / прикрепить к подписке другой процесс, чтобы сделать то, что вы пытаетесь сделать.

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

С помощью Azure Logic Apps вы можете создать рабочий процесс логики и интегрировать множество служб с помощью соединителей, предоставляемых этим инструментом.

Вы найдете больше в:

https://docs.microsoft.com/en-us/azure/connectors/connectors-create-api-servicebus

И за ответ на твой вопрос

Во-первых, я хочу знать, подходит ли тема служебной шины?

Быстрый ответ - да, использование шаблонов обмена сообщениями - лучший способ создавать надежные решения.

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

Единственное, что вам нужно знать, это то, что вы будете делать, если не получили уведомление? вам нужно подумать об этом сценарии.

person Roberto Borges    schedule 01.05.2019

Из обсуждения выше.

Функции Azure с очередями / темами

Независимо от очередей или тем. вы можете запускать лазурную функцию с обоими. Эта функция обработает сообщение. Теперь вы можете создать два метода в одной и той же функции SendEmail (), sendPhoneNotifcation () и распределить задачи с помощью параллельной библиотеки задач C #. Таким образом, одна и та же функция будет выполнять обе задачи параллельно.

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

person Imran Arshad    schedule 01.05.2019