簡介
繼上一篇 CentOS上安裝RabbitMQ講述RabbitMQ具體安裝后,這一篇講述RabbitMQ在C#的使用,這里將從基本用法到高級特性的使用講述帅韧。
前序條件
這里需要增加一個用戶,并且設(shè)置用戶為administrator,更多命令可以參考[RabbitMQ更多命令]啃勉,這里開始我本來是想用guest用戶忽舟,端口是:15672,但是在創(chuàng)建連接的時候是連接不上的淮阐,查資料后發(fā)現(xiàn)是必須開放5672端口叮阅,并且不能使用guest默認(rèn)用戶(http://www.rabbitmq.com/rabbitmqctl.8.html)
rabbitmqctl add_user allen pwd //增加用戶
rabbitmqctl set_user_tags allen administrator //設(shè)置用戶權(quán)限
rabbitmqctl change_password allen newpass //修改密碼
開啟5672端口
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
基本用法
連接之前可以看到,rabbitmq的UI界面是沒有連接的
send發(fā)布者的代碼
/// <summary>
/// 發(fā)送消息
/// </summary>
public class Send
{
private static readonly string appID = ConfigurationManager.AppSettings["AppID"];
static void Main(string[] args)
{
var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
string queue = string.Format("MQ{0}.BaseStudy", appID);
channel.QueueDeclare(queue, false, false, false, null); //定義一個隊列
while (true)
{
Console.Write("請輸入要發(fā)送的消息:");
var message = Console.ReadLine();
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", queue, null, body); //發(fā)送消息
Console.WriteLine("已發(fā)送的消息: {0}", message);
}
}
}
}
}
RabbitMQUri泣特,和AppID
<add key="AppID" value="150107"/> <!--隊列ID-->
<add key="RabbitMQUri" value="amqp://test_user:123456@111.231.204.119:5672/" /> <!--連接字符串-->
RabbitMQUri的Value相當(dāng)于:
<add key="RabbitMQ_HostName" value="111.231.204.119"/>
<add key="RabbitMQ_UserName" value="test_user"/>
<add key="RabbitMQ_Password" value="123456"/>
<add key="RabbitMQ_Port" value="5672"/>
<add key="RabbitMQ_VirtualHost" value="/"/>
未建立連接時:
建立連接后:
發(fā)送消息
可以看到RabbitMQ的UI管理界面的消息有:
receive消費(fèi)者收到的消息:
receive的代碼:
/// <summary>
/// 接收消息
/// </summary>
public class Receive
{
private static readonly string appID = ConfigurationManager.AppSettings["AppID"];
static void Main(string[] args)
{
var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
string queue = string.Format("MQ{0}.BaseStudy", appID);
channel.QueueDeclare(queue, false, false, false, null); //定義一個隊列
Console.WriteLine("準(zhǔn)備接收消息:");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (s, e) =>
{
var body = e.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("接收到的消息: {0}", message);
};
channel.BasicConsume(queue, true, consumer); //開啟消費(fèi)者與通道浩姥、隊列關(guān)聯(lián)
Console.ReadLine();
}
}
}
最后,附上源碼地址状您,包括RabbitMQ的基本用法勒叠,發(fā)布訂閱,高級特性DEMO