问题描述: ASP.NET Core应用程序在IIS上托管时无法从RabbitMQ的消息队列中消费消息。
解决方法:
using RabbitMQ.Client;
public void ConfigureServices(IServiceCollection services)
{
// 其他服务配置代码...
var factory = new ConnectionFactory()
{
HostName = "RabbitMQ服务器地址",
UserName = "用户名",
Password = "密码"
};
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
// 设置消费者接收消息的回调方法
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
// 处理接收到的消息
};
channel.BasicConsume(queue: "消息队列名称", autoAck: true, consumer: consumer);
}
using RabbitMQ.Client;
public class MyService
{
private readonly IModel _channel;
public MyService(IModel channel)
{
_channel = channel;
}
public void ConsumeMessage()
{
var consumer = new EventingBasicConsumer(_channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
// 处理接收到的消息
};
_channel.BasicConsume(queue: "消息队列名称", autoAck: true, consumer: consumer);
}
}
请根据实际情况修改以上代码示例中的参数和配置,确保与你的RabbitMQ服务器和应用程序设置相匹配。