前面介绍了安装,现在实战一下。
项目需要引用NuGet包
1.发送消息
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
string message = this.textBox1.Text;
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", "hello", null, body);
MessageBox.Show(message + "has been sent");
this.textBox1.Clear();
}
}
2.接受消息
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "guest", Password = "guest" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new EventingBasicConsumer(channel);
//第三个参数表示是否自动deqeqe,若设置为true,则可以代替channel.BasicAck(ea.DeliveryTag, false);
channel.BasicConsume("hello", false, consumer);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
//处理数据的时间
Thread.Sleep(2000);
Console.WriteLine(" [x] Received {0}", message);
//告知该消息已经处理完成
channel.BasicAck(ea.DeliveryTag, false);
};
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
执行结果如下: