如果您習慣於處理與SQL Server等關系數據庫的連接,那么您可能會發現EasyNetQ處理連接的方式有點奇怪。與關系數據庫的通信始終由客戶端啟動。客戶端打開連接,發出SQL命令,在必要時處理結果,然后關閉連接。一般的建議是,您應該在盡可能短的時間內保持打開連接,並將連接池保留給API。
與RabbitMQ等消息代理進行交談有點不同,因為連接往往會持續應用程序的生命周期。通常,您將打開連接,創建訂閱,然后等待任何消息到達打開的連接。EasyNetQ不假設經紀人隨時可用。相反,它采用延遲連接方法,在后台線程上輪詢給定端點,直到它可以連接。如果服務器因任何原因(可能是網絡故障,可能是RabbitMQ服務器本身已被退回)而斷開連接,EasyNetQ將恢復輪詢端點,直到它可以重新連接。
標准做法是在應用程序的生命周期內創建單個IBus實例。在應用程序關閉時處理它。
與RabbitMQ服務器的延遲連接由IBus接口表示。大多數EasyNetQ操作都是IBus上的方法。您創建一個這樣的IBus實例:
var bus = RabbitHutch.CreateBus(“host=myServer;virtualHost=myVirtualHost;username=mike;password=topsecret”);
連接字符串由key = value格式的鍵/值對組成,每個鍵都以分號(;)分隔。唯一必填字段是“主機”。可能的連接字符串值為:
- 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)。有關詳細信息,請參閱群集支持
- virtualHost(例如virtualHost = myVirtualHost)默認為默認虛擬主機'/'
- username(例如username = mike)默認為'guest'(對於非'localhost'主機,您需要其他用戶而不是'guest')
- password(例如密碼= mysecret)默認為'來賓'
- requestedHeartbeat(例如requestedHeartbeat = 10)默認為10秒。沒有心跳,設置為零。
- prefetchcount(例如prefetchcount = 1)默認值為50.這是在EasyNetQ發送ack之前RabbitMQ將傳遞的消息數。設置為0表示無限預取(不推薦)。設置為1,以便在消費者群體中實現公平的工作平衡。
- publisherConfirms(例如publisherConfirms = true)默認為false。這將啟用Publisher Confirms。
- persistentMessages(例如persistentMessages = false)默認為true。這決定了在發布消息時如何設置basic.properties中的delivery_mode。false = 1,true = 2。設置為true時,RabbitMQ將消息保留到磁盤,並在服務器重新啟動后繼續存在。設置為false時,可以預期性能提升。
- product(例如產品=我真正重要的服務)在EasyNetQ 0.27.3中引入。default value是實例化總線的可執行文件的名稱。此處輸入的值將顯示在RabbitMQ的管理界面中。
- platform(例如platform = my.fully.qualified.domain.name)在EasyNetQ 0.27.3中引入。default value是運行客戶端進程實例化總線的計算機的主機名。此處輸入的值將顯示在RabbitMQ的管理界面中。
- timeout(例如超時= 60)默認為10秒。在EasyNetQ 0.17中引入。解析為System.UInt16類型。范圍從0到65535.格式以秒為單位。對於無限超時,請使用0.超出值時拋出System.TimeoutException。
要關閉連接,只需像這樣處理總線:
bus.Dispose();
這將關閉EasyNetQ使用的連接,渠道,消費者和所有其他資源。
基本翻譯
n. 密碼;口令