使用默认账号:guest/guest登录http://localhost:15672/#/进去,添加一个新用户(Administrator权限),并设置其Permission
新建两个控制台程序
安装RabbitMQ.Client:https://www.nuget.org/packages/RabbitMQ.Client/
生产者(producer)
static void Main(string[] args) { try { ConnectionFactory factory = new ConnectionFactory { UserName = "admin",//用户名 Password = "123456",//密码 HostName = "localhost"//rabbitmq ip }; //创建连接 var connection = factory.CreateConnection(); //创建通道 var channel = connection.CreateModel(); //声明一个队列 channel.QueueDeclare("hello", false, false, false, null); Console.WriteLine("\nRabbitMQ连接成功,请输入消息,输入exit退出!"); string input; do { input = Console.ReadLine(); var sendBytes = Encoding.UTF8.GetBytes(input); //发布消息 channel.BasicPublish("", "hello", null, sendBytes); } while (input.Trim().ToLower() != "exit"); channel.Close(); connection.Close(); } catch(Exception ex) { Console.WriteLine(ex.Message); Console.Read(); } }
消费者(consumer)
static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory { UserName = "admin",//用户名 Password = "123456",//密码 HostName = "localhost"//rabbitmq ip }; //创建连接 var connection = factory.CreateConnection(); //创建通道 var channel = connection.CreateModel(); //事件基本消费者 EventingBasicConsumer consumer = new EventingBasicConsumer(channel); //接收到消息事件 consumer.Received += (ch, ea) => { var message = Encoding.UTF8.GetString(ea.Body); Console.WriteLine($"收到消息: {message}");//确认该消息已被消费 channel.BasicAck(ea.DeliveryTag, false); // Console.WriteLine($"已发送回执[{ea.DeliveryTag}]"); }; //启动消费者 设置为手动应答消息 channel.BasicConsume("hello", false, consumer); Console.WriteLine("消费者已启动"); Console.ReadKey(); channel.Dispose(); connection.Close(); }