主要記錄如何在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關閉,不然服務器上會有保留的隊列
完成!!!