2-用EasyNetQ連接RabbitMQ(黃亮翻譯)


如果你連接過關系數據庫,例如SQL Server。你會發現EasyNetQ處理connections有點奇怪。和關系數據庫通訊一直都是通過client開始的。Client 打開一個連接, 發出一個SQL命令,如有必要時,處理結果,然后關閉連接。一般建議是你維持一個打開的連接,時間要盡可能短,通過API斷開連接池。

諸如與RabbitMQ這樣的消息代理會話,是有些不同的,因為連接傾向於在應用的整個生命周期內保持連接狀態。通常你打開一個連接,創建一個訂閱,然后打開連接后,等待消息到來。EasyNetQ不能保證代理在所有的時間都是可用的。相反它使用了延遲連接的方法,在后台線程輪詢終結點,直到連接成功。假如服務器出於任何原因連接斷開了(可能是網絡故障,或許是RabbitMQ Server自身的原因斷開了),EasyNetQ將恢復輪詢終結點直到重新連接成功。

標准的做法是在你應用的生命周期內只創建一個IBus實例.當你的應用關閉后Dispose掉它。
延遲連接到RabbitMQ服務器是通過IBus接口表示的。大部分EasyNetQ操作都是IBus上的方法。創建一個IBus實例如下:

var bus = RabbitHutch.CreateBus("host=myServer;virtualHost=myVirtualHost;username=mike;password=topsecret")

這個連接字符串是由鍵值對組成,格式如下 key=value, 通過分號;分隔。只有一個必選的字段是host.可能的連接字符串值是:

  • host(例如 host=localhost 或 host=192.168.2.56 或 host=myhost.mydomain.com)這個字段是必選的。如要具體指定你要連接服務器端口,你用標准格式 host:port(例如:host=myhost .com:5673)。假如你省略了端口號,AMQP默認端口是5672.連接到RabbitMQ集群,需要指定每一個集群節點用逗號分隔(例如:host:myhost1.com,myhost2.com,myhost3.com).更多詳情請參考Cluster Support

  • virtualhost(例如:virtualHost=myVirturalHost)默認虛擬主機是'/'

  • username(例如:username=mike)默認是'guest'(對於非'localhost'主機你需要使用其他用戶名)

  • password (例如:password=mysecret)默認為'guest'

  • requestedHearbeat(例如:requestHearbeat=10)默認為10秒鍾。沒有心跳設置為0

  • prefetchcount(例如:prefetchcount=1) 默認為50.這個值是在EasyNetQ發送ack之前發送給RabbitMQ的消息數。不限制設置為0(不推薦). 為了在消費者之間保持公平和平衡設置為1.

  • publisherConfirms(例如:publisherconfirms=true)默認是false。 如何開啟Publisher Confirms?

  • persistentMessages(例如:persistentMessages=false)默認為true。這個決定了在發送消息時采用什么樣的delivery_mode。 false=1,true=2. 設置為true,RabbitMQ將會把消息持久化到磁盤,並且在服務器重啟后仍會存在。設置為false可以提高性能收益。

  • product(例如:product=我的現實中重要的服務)在EasyNetQ 0.27.3中被引進。默認值是Bus的實例名。
    此處輸入的值將顯示在RabbitMQ的后台管理界面中。

  • platform(例如:platform=my.fully.qualified.domain.name)在EasyNetQ 0.27.3中被引進。默認值是運行着客戶端處理Bus的實例的機器的主機名。此處輸入的值將會線上在RabbitMQ管理端界面中。

  • timeout(例如:timeout=60)模式值為10秒。在EasyNet 0.17中被引進。可解析類型為System.UInt16從0到65535范圍內的值。不限制超時時間設置為0.當超時事時拋出System.TimeoutException.

關閉連接,只要簡單的dispose,如下:

bus.Dispose();

這樣就關閉了EasyNetQ使用過的連接、管道、消費者和所有其他資源。

原文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Connecting-to-RabbitMQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM