我想要webapplication并在后端我打开一个新线程并启动一个监听器。我想要什么,打开连接一次,rabbitmq监听器启动,当新消息到来时,它在后台处理。 对此最好的方法是什么?
答案 0 :(得分:0)
为什么需要在Web应用程序中监听事件?
而不是使用topshelf和masstransit作为rabbitmq客户端编写Windows服务。
您可以连接到rabbitmq并在Program.cs中注册监听器使用者,如下所示:
IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
IRabbitMqHost host = cfg.Host(new Uri(RabbitMQConstants.RabbitMQUri),
hst =>
{
hst.Username(RabbitMQConstants.RabbitMQUserName);
hst.Password(RabbitMQConstants.RabbitMQPassword);
});
cfg.ReceiveEndpoint(host,
RabbitMQConstants.YourQueueName,
endPointConfigurator => { endPointConfigurator.Consumer<SomeConsumer>(); });
});
启动总线配置器:
busControl.Start();
消费者示例:
public class SomeConsumer :
IConsumer<YourMessageClass>
{
public async Task Consume(ConsumeContext<YourMessageClass> context)
{
await Console.Out.WriteLineAsync($"Message consumed: {context.Message.YourValue}");
}
}
有关更多信息和示例,请查看官方masstransit文档:http://masstransit-project.com/MassTransit/usage/message-consumers.html