C # RabbitMQ Дизайн Подход - PullRequest
       12

C # RabbitMQ Дизайн Подход

0 голосов
/ 29 декабря 2018

Я только начинаю работать с RabbitMQ, потому что на веб-сайте, над которым я работаю, мы хотим отключить некоторые ресурсоемкие задачи, такие как отправка электронных писем, создание PDF-файлов и т. Д.

Я начал сследуя очень простому учебнику по C # «Hello world» на веб-сайте RabbitMQ (https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html).) Это было полезно, чтобы получить очень краткое понимание того, как RabbitMQ держится вместе, но оставило мне ряд вопросов, которые искренне и удивительноЯ не могу найти ответы в Интернете ....

  1. В примере "Hello world" отправляется основная строка. В моем примере отправки электронных писем мой Издатель отправил бы все данные, необходимые для отправкиэлектронная почта, т. е. получатель, тема и т. д., возможно, в формате JSon?
  2. Как обычно вы структурируете потребителя для выполнения метода для DoSomething? В идеале, я бы хотел, чтобы он был свободным, чтобы, если сообщение имеет определенныйвведите Consumer выполняет метод SendEmail (), или, если сообщение другого типа, он выполняет метод GeneratePDF () и т. д ....
  3. У меня есть издатель и потребитель, однако у меня есть ряд различных задач, которые я хочу, чтобы потребитель обрабатывал, т. е. отправлять электронные письма или создавать PDFS.Должно ли у меня быть несколько потребителей, то есть по одному для каждого типа задач, или несколько очередей (снова по одной для каждой задачи)?

Это некоторые из основных вопросов, которые у меня есть в настоящее время, которые мешают мне видетькак RabbitMQ используется в реальном сценарии.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 декабря 2018

При обмене сообщениями обычно вы отправляете пакеты данных небольшого размера (например, простые объекты JSON) так же, как если бы вы определяли API на основе http.Определения функций и спецификации ввода / вывода могут быть идентичными - думать об обмене сообщениями просто как о другом транспортном механизме.

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

...