我已按如下方式配置 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 不支持消费 text,它必须是以 MassTransit 支持的格式序列化的类型(例如 JSON)。
支持的序列化格式:https://masstransit.io/documentation/configuration/serialization