如何在 C# 中使用 MassTransit 来使用来自 RabbitMQ 的纯文本消息

问题描述 投票:0回答:1

我已按如下方式配置 MassTransit RabbitMQ

services.AddMassTransit(x =>
 {
   x.AddConsumer<MessageConsumer>();
   x.UsingRabbitMq((context, cfg) =>
         {
             cfg.Host("localhost", hostConfigurator =>
             

{                  hostConfigurator.Username(rabbitMqConfigurations.Username);                  hostConfigurator.Password(rabbitMqConfigurations.Password);              }
);
             
             cfg.ReceiveEndpoint("testQ", configurator =>
             

{                  configurator.ConfigureConsumer<MessageConsumer>(context);                                }
);
             cfg.ConfigureEndpoints(context);
         });
  }
 );

MessageConsumer 看起来像:

public class MessageConsumer : IConsumer<SampleMessage>
{
  public Task Consume(ConsumeContext<SampleMessage> context) 
  {
          Console.WriteLine("Hello World");
  }
}

SampleMessage 看起来像:

public sealed record SampleMessage(string Data)

但是当我从 RabbitMQ 控制台发布消息(例如“abcds”)时 它给了我这样的错误

Exception thrown: 'System.Text.Json.JsonException' in System.Text.Json.dll
Exception thrown: 'System.Runtime.Serialization.SerializationException' in MassTransit.dll
Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Private.CoreLib.dll

我使用了 MassTransit 版本 8.2.4 MassTransit.RabbitMQ 版本 8.2.4 MassTransit.Newtonsoft 8.2.4

请帮助我解决这个问题,任何例子都很好

我尝试点击以下链接,但没有多大帮助

如何使用 MassTransit 以纯文本形式使用来自 RabbitMQ 的消息?

.net serialization rabbitmq masstransit
1个回答
0
投票

MassTransit 不支持消费 text,它必须是以 MassTransit 支持的格式序列化的类型(例如 JSON)。

支持的序列化格式:https://masstransit.io/documentation/configuration/serialization

© www.soinside.com 2019 - 2024. All rights reserved.