主要记录如何在Visual Studio中用C#语言使用RabbitMQ机制进行数据的接收
首先进行创建一个连接
<span style="font-size:18px;"> var factory = new ConnectionFactory();
factory.HostName = "127.0.0.1";
factory.Port = 0000;
factory.UserName = "test";
factory.Password = "test";</span>
上面的HostName接的就是你服务器的IP地址,Port为你服务器传输数据的端口,UserNAme和Password都是给你传输数据那端的人定义的,要想接收数据要先从发送数据的人要这些属性。
接下来用factory建立一个connection
<span style="font-size:18px;"> var connection = factory.CreateConnection()</span>
创建完之后用这个connection创建一个通道channel 用来传输数据的通道
var channel = connection.CreateModel()
用这个channel创建一个持久化的序列
channel.QueueDeclare(queue: "ABCDEFG", durable: true, exclusive: false, autoDelete: false, arguments: null);
这里面的queue是给你发送消息的人进行定义的,到时候向他要。
输入1,如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
channel.BasicQos(0, 1, false);
之后在队列上定义一个消费者
QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
var consumer1 = new EventingBasicConsumer(channel);
消费队列,并设置应答模式为程序主动应答
channel.BasicConsume(queue: "ABCDEFG", noAck: false, consumer: consumer);
//阻塞函数,获取队列中的信息
BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
下面是开始进行数据的接收!!!!
while (true)
{
byte[] bytes = ea.Body;
string str = Encoding.UTF8.GetString(bytes);
JsonReader reader = new JsonTextReader(new StringReader(str));
while (reader.read())
{
console.writeline(reader.valuetype + "\t\t" + reader.value);
}
确认回复
channel.BasicAck(ea.DeliveryTag, false);
}
最好每次用完 channel 和 connection 后都进行 Close关闭,不然服务器上会有保留的队列
完成!!!