如何解决大众运输 - 消费者没有注册和激活
我正在尝试注册消费者,但没有成功使用公共交通。 我使用模块方法使用 Autofac 注册了 MT。
首先 - 我创建了一些简单的消息:
public class SimpleMessage
{
public string msg { get; set; }
}
我已经设法将它们发送到队列中:
var endpointTest = await _busControl.GetSendEndpoint(new Uri("queue:queueTest"));
await endpointTest.Send(new SimpleMessage
{
msg = "test"
});
然后我创建了一个消费者:
public class SimpleMessageConsumer : IConsumer<SimpleMessage>
{
private readonly ILogger _logger;
public SimpleMessageConsumer(ILogger logger)
{
_logger = logger;
}
public async Task Consume(ConsumeContext<SimpleMessage> context)
{
_logger.Info($"got msg from queue: {context.Message}");
}
}
但是当消息出现在队列中时它不会运行。我的配置是:
public class BusModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<BusSettings>().As<IBusSettings>();
builder.AddMassTransit(cfg =>
{
cfg.AddConsumer<SimpleMessageConsumer,SimpleMessageConsumerDefinition>();
cfg.Builder.Register(context =>
{
var busSettings = context.Resolve<IBusSettings>();
var logger = context.Resolve < ILogger >();
var busControl = Bus.Factory.CreateUsingRabbitMq(bus =>
{
bus.AutoDelete = busSettings.AutoDelete;
bus.Durable = busSettings.Durable;
bus.Exclusive = busSettings.Exclusive;
bus.ExchangeType = busSettings.Type;
//bus.UseNServiceBusJsonSerializer();
bus.Host(busSettings.HostAddress,busSettings.Port,busSettings.VirtualHost,null,h =>
{
h.Username(busSettings.Username);
h.Password(busSettings.Password);
});
bus.ReceiveEndpoint("queueTest",ec =>
{
ec.Consumer(() => new SimpleMessageConsumer(logger));
});
});
return busControl;
}).SingleInstance().As<IBusControl>().As<IBus>();
});
}
}
在 program.cs 中 我有:
services.AddMassTransitHostedService();
和
containerBuilder.RegisterModule<BusModule>();
我提到过 - 向队列发送消息有效,但消费者没有运行。
你能帮我做错什么吗?我应该如何修复配置?为了激活消费者?
解决方法
我已更新您的配置以使其正常工作,使用实际的总线配置方法而不是混合两种解决方案:
...
celciusEntry = Entry(root,width=10)
celciusEntry.place(x=20,y=30)
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。