我有一个asp.net MVC 5应用程序。现在我希望有一个新功能允许我从设备接收GPS信号并在Web客户端实时更新设备。 我的计划是使用RabbitMQ处理消息队列,并使用SignalR通知客户端位置更新 像我这样的Rabbit消费者控制台应用程序中的代码
var client = GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients;
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
var queueName = channel.QueueDeclare().QueueName;
channel.ExchangeDeclare("mychannel", "fanout");
channel.QueueBind(queueName, "mychannel", "");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("[x] Receive {0}", message);
client.All.hello(message);
};
channel.BasicConsume(queue: queueName,
autoAck: true,
consumer: consumer);
Console.WriteLine("Press Enter to quit");
Console.ReadLine();
}
}
但是当我向RabbitMQ发送消息时,代码不会被触发。如果我删除signalR客户端的代码:
var client = GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients;
事情按预期工作,我可以像往常一样收到消息
我的问题是:
我的方法是否正确
如果方法正确,那么如何使其有效?
非常感谢