RabbitMQ的基本用法到高級特性的使用

簡介

繼上一篇 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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膏孟,一起剝皮案震驚了整個濱河市眯分,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柒桑,老刑警劉巖弊决,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幕垦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)傅联,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門先改,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒸走,你說我怎么就攤上這事仇奶。” “怎么了比驻?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵该溯,是天一觀的道長。 經(jīng)常有香客問我别惦,道長狈茉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任掸掸,我火速辦了婚禮氯庆,結(jié)果婚禮上蹭秋,老公的妹妹穿的比我還像新娘。我一直安慰自己堤撵,他們只是感情好仁讨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著实昨,像睡著了一般洞豁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荒给,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天丈挟,我揣著相機(jī)與錄音,去河邊找鬼锐墙。 笑死礁哄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的溪北。 我是一名探鬼主播桐绒,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼之拨!你這毒婦竟也來了茉继?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蚀乔,失蹤者是張志新(化名)和其女友劉穎烁竭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吉挣,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡派撕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了睬魂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片终吼。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖氯哮,靈堂內(nèi)的尸體忽然破棺而出际跪,到底是詐尸還是另有隱情,我是刑警寧澤喉钢,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布姆打,位于F島的核電站,受9級特大地震影響肠虽,放射性物質(zhì)發(fā)生泄漏幔戏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一税课、第九天 我趴在偏房一處隱蔽的房頂上張望评抚。 院中可真熱鬧豹缀,春花似錦、人聲如沸慨代。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侍匙。三九已至氮惯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間想暗,已是汗流浹背妇汗。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留说莫,地道東北人杨箭。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像储狭,于是被迫代替她去往敵國和親互婿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 整體架構(gòu) 部署步驟 基于 Docker 基本概念內(nèi)存節(jié)點(diǎn)只保存狀態(tài)到內(nèi)存辽狈,例外情況是:持久的 queue 的內(nèi)容將...
    mvictor閱讀 12,748評論 5 30
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,892評論 2 11
  • 關(guān)于消息隊列慈参,從前年開始斷斷續(xù)續(xù)看了些資料,想寫很久了刮萌,但一直沒騰出空驮配,近來分別碰到幾個朋友聊這塊的技術(shù)選型,是時...
    預(yù)流閱讀 584,529評論 51 785
  • RabbitMQ簡介http://www.searchsoa.com.cn/showcontent_43337.h...
    ReanCool閱讀 2,004評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理着茸,服務(wù)發(fā)現(xiàn)壮锻,斷路器,智...
    卡卡羅2017閱讀 134,633評論 18 139