如题,我在官网的代码看到的都是使用控制台作为消费者输出信息,但是rabbitmq的管理界面是有消息的,调用web也会清空消息,但是同样的代码在web端没有输出消息
这是我的代码:
var factory = new ConnectionFactory()
{
UserName = "admin",
Password = "admin",
Port = 5672,
HostName = "192.168.150.129",
RequestedHeartbeat = 0,
VirtualHost = "/vhost_mmr"
};
using (var connection = factory.CreateConnection())
{
using (var channel =connection.CreateModel())
{
//channel.QueueDeclare(queue: "hello",
// durable: false,
// exclusive: false,
// autoDelete: false,
// arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var ret1 = Encoding.UTF8.GetString(body);
ViewBag.msg = ret1;
System.Diagnostics.Debug.Write("测试:" + ret1);
};
var ret = channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
}
}
如果不能使用web当做消费者或者生产者的话,正常的生产环境是用什么作为消费者和生产者呢,是写windows服务吗。
web服务可以做生产者.
消费者要用稳定的服务.
web服务指的是webapi吗?我用的webapi结果好像生产者是控制台的时候也不能收到数据,只有服务和客户端都是控制台才可以。。
@洛晨随风: 就是web站点.
消费者和生产者和宿主没关系.
我们一般说不要用web服务跑消费者是因为web服务不稳定.
你消息收发都没跑通.和宿主是没关系的.是代码问题.
这个东西你要分开测试的.先测试生产.再测试消费.
@吴瑞祥: 那在一般生产环境的话生产者都用什么作为宿主啊,windows server吗
@洛晨随风: 生产者无所谓的.
因为他只要能单次发送就行了.所以直接在web服务里直接在业务代码里直接发.
@吴瑞祥: https://stackoverflow.com/questions/57556931/how-do-i-use-the-rabbitmq-in-my-net-core-web 这里是我的代码。你看我的这个有什么问题吗,我就是用的这样的代码,结果才发现只有生产者和消费者都是控制台的时候才行,但是换成WEBAPI +控制台或者WEBAPI +mvc web就不行了
而且我看JAVA的教学视频也是控制台系统,官网也是。。新手还请见谅
@洛晨随风: 你用easyq试试吧.
对了.我以前做过一个项目
https://github.com/wrx362114/EasyMQService
你可以看看.
@吴瑞祥: 好的谢谢,不过我好像发现了我这个问题似乎和链接的开关有关系吧,
https://q.cnblogs.com/q/117594/
这是我发现的一个现象,不知道您是否遇见过