0Pricing
C# Academy · Leçon

Produire et consommer des messages

Envoyez et gérez des messages avec MassTransit.

Produire et consommer des messages est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Enregistrer MassTransit

Configurez MassTransit dans DI : enregistrez-le, indiquez-lui un transport (ici RabbitMQ) et laissez-le découvrir vos consommateurs.

builder.Services.AddMassTransit(x =>
{
    x.AddConsumers(typeof(Program).Assembly);
    x.UsingRabbitMq((context, cfg) =>
    {
        cfg.Host("localhost");
        cfg.ConfigureEndpoints(context);
    });
});

Définir un consommateur

Un consommateur implémente IConsumer<T> pour le type de message qu’il traite. Votre logique se trouve dans Consume, qui reçoit un ConsumeContext<T>.

public class OrderPlacedConsumer : IConsumer<OrderPlaced>
{
    public async Task Consume(ConsumeContext<OrderPlaced> context)
    {
        OrderPlaced message = context.Message;
        // handle the event
    }
}

Publier un événement

Injectez IPublishEndpoint et appelez Publish pour diffuser un événement à tous les abonnés.

public class OrderService
{
    private readonly IPublishEndpoint _publish;
    public OrderService(IPublishEndpoint publish) => _publish = publish;

    public Task PlaceOrderAsync(Guid id, string email) =>
        _publish.Publish(new OrderPlaced(id, email));
}

Envoyer une commande

Les commandes sont envoyées à un endpoint précis. Résolvez un ISendEndpoint pour la destination, puis appelez Send.

var endpoint = await _sendProvider
    .GetSendEndpoint(new Uri("queue:charge-payment"));
await endpoint.Send(new ChargePayment(orderId, amount));

Récapitulatif de Publish et Send

Publish sert aux événements et atteint tous les consommateurs abonnés ; Send sert aux commandes et cible une seule file d’attente. Les choisir correctement définit votre comportement de routage.

La puissance de ConsumeContext

ConsumeContext expose bien plus que le message : des identifiants de corrélation, des en-têtes, ainsi que la possibilité de publier ou de répondre depuis un consommateur, ce qui permet de chaîner les messages.

public async Task Consume(ConsumeContext<OrderPlaced> context)
{
    await context.Publish(new InvoiceRequested(context.Message.OrderId));
}

Requête-réponse

MassTransit prend également en charge les échanges requête-réponse par messagerie. Un client de requêtes envoie une requête et attend une réponse typée, ce qui est utile lorsque vous avez besoin d’une réponse tout en souhaitant conserver le découplage avec le courtier de messages.

var response = await _client
    .GetResponse<OrderStatus>(new GetOrder(orderId));
OrderStatus status = response.Message;

Nommage des endpoints

ConfigureEndpoints nomme automatiquement un endpoint de réception (file d’attente) par consommateur selon des conventions. Vous pouvez personnaliser les noms à l’aide de formateurs ou d’une configuration explicite si nécessaire.

Sérialisation des messages

Par défaut, MassTransit sérialise les messages au format JSON et inclut des métadonnées (type de message, identifiants). Les producteurs et les consommateurs partagent les types du contrat de message, souvent dans un paquet partagé.

Concurrence

Un consommateur peut traiter de nombreux messages en parallèle. Ajustez PrefetchCount et les limites de concurrence afin d’équilibrer le débit et la capacité des systèmes en aval.

cfg.ReceiveEndpoint("orders", e =>
{
    e.PrefetchCount = 16;
    e.ConcurrentMessageLimit = 8;
    e.ConfigureConsumer<OrderPlacedConsumer>(context);
});

Vérifier les consommateurs

MassTransit fournit un outil de vérification en mémoire qui vous permet de publier un message et de vérifier qu’un consommateur l’a traité, sans courtier de messages réel.

Vérification rapide

Vérifiez la production et la consommation.

Récapitulatif

Enregistrez MassTransit avec AddMassTransit, un transport et ConfigureEndpoints. Les consommateurs implémentent IConsumer<T> avec une méthode Consume. Utilisez IPublishEndpoint.Publish pour les événements (tous les abonnés) et ISendEndpoint.Send pour les commandes (une seule file d’attente). ConsumeContext permet le chaînage et les échanges requête-réponse, tandis qu’un outil de vérification confirme le comportement des consommateurs en mémoire.

Questions Fréquemment Posées

La leçon « Produire et consommer des messages » est-elle gratuite ?

Oui — le texte complet de « Produire et consommer des messages » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Produire et consommer des messages » ?

Envoyez et gérez des messages avec MassTransit. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Produire et consommer des messages » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Concepts de messagerie
  2. Produire et consommer des messages
  3. Sagas et flux de travail
  4. Gestion des erreurs et nouvelles tentatives
← Retour à C# Academy