0Pricing
C# Academy · Урок

Основы обмена сообщениями

Разберитесь в командах, событиях и очередях.

«Основы обмена сообщениями» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.

Зачем нужны сообщения

Асинхронный обмен сообщениями позволяет службам взаимодействовать без прямых вызовов друг друга. Производитель отправляет сообщение, а потребитель забирает его позже. Это отделяет службы друг от друга, сглаживает всплески нагрузки и сохраняет устойчивость системы, когда потребитель временно недоступен.

Что такое MassTransit

MassTransit — это платформа .NET, работающая поверх брокеров сообщений, таких как RabbitMQ или Azure Service Bus. Она берёт на себя сериализацию, маршрутизацию, повторные попытки и другие задачи, позволяя Вам сосредоточиться на сообщениях и обработчиках, а не на настройке брокера.

dotnet add package MassTransit

Команды и события

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

Моделирование команды

Команда — это простой тип сообщения, названный в повелительной форме. Отправляйте её одному потребителю.

public record ChargePayment(
    Guid OrderId,
    decimal Amount);

Моделирование события

Событие называют в прошедшем времени и публикуют для всех заинтересованных подписчиков.

public record OrderPlaced(
    Guid OrderId,
    string CustomerEmail);

Очереди

Очередь хранит сообщения, пока потребитель их не обработает. Она работает по принципу «точка — точка»: каждое сообщение доставляется ровно одному потребителю, что позволяет распределять нагрузку между экземплярами потребителей (конкурирующими потребителями).

Обменники и темы

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

Как MassTransit использует их

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

Разделение служб на практике

Служба заказов публикует OrderPlaced и продолжает работу. Независимо от неё почтовая служба и служба аналитики обрабатывают это событие. Добавление нового подписчика не требует изменений в производителе.

Гарантии доставки

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

Когда использовать обмен сообщениями

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

Быстрая проверка

Проверьте концепции обмена сообщениями.

Повторение

Асинхронный обмен сообщениями разделяет службы с помощью брокера. MassTransit абстрагирует брокеры, такие как RabbitMQ. Команды (повелительная форма, один обработчик) отправляются в очередь, а события (прошедшее время, много обработчиков) публикуются в обменник, который распределяет их среди подписчиков. Учитывайте доставку не менее одного раза и делайте потребителей идемпотентными.

Часто задаваемые вопросы

Урок «Основы обмена сообщениями» бесплатный?

Да — полный текст урока «Основы обмена сообщениями» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы обмена сообщениями»?

Разберитесь в командах, событиях и очередях. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы обмена сообщениями»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы обмена сообщениями
  2. Создание и обработка сообщений
  3. Саги и рабочие процессы
  4. Обработка ошибок и повторные попытки
← Назад к C# Academy