ios rabbitmq整合及使用
rabbitmq是流行的開源訊息佇列系統,用erlang語言開發。rabbitmq是amqp(高階訊息佇列協議)的標準實現。如果不熟悉amqp,直接看rabbitmq的文件會比較困難。不過它也只有幾個關鍵概念,這裡簡單介紹。rabbitmq的結構圖如下:
幾個概念說明:
broker:簡單來說就是訊息佇列伺服器實體。exchange:訊息交換機,它指定訊息按什麼規則,路由到哪個佇列。
queue:訊息佇列載體,每個訊息都會被投入到乙個或多個佇列。
binding:繫結,它的作用就是把exchange和queue按照路由規則繫結起來。
routing key:路由關鍵字,exchange根據這個關鍵字進行訊息投遞。
vhost:虛擬主機,乙個broker裡可以開設多個vhost,用作不同使用者的許可權分離。
producer:訊息生產者,就是投遞訊息的程式。
consumer:訊息消費者,就是接受訊息的程式。
channel:訊息通道,在客戶端的每個連線裡,可建立多個channel,每個channel代表乙個會話任務。
訊息佇列的使用過程大概如下:(1)客戶端連線到訊息佇列伺服器,開啟乙個channel。
(2)客戶端宣告乙個exchange,並設定相關屬性。
(3)客戶端宣告乙個queue,並設定相關屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好繫結關係。
(5)客戶端投遞訊息到exchange。
exchange接收到訊息後,就根據訊息的key和已經設定的binding,進行訊息路由,將訊息投遞到乙個或多個佇列裡。
exchange也有幾個型別,完全根據key進行投遞的叫做direct交換機,例如,繫結時設定了routing key為」abc」,那麼客戶端提交的訊息,只有設定了key為」abc」的才會投遞到佇列。對key進行模式匹配後進行投遞的叫做topic交換機,符號」#」匹配乙個或多個詞,符號」*」匹配正好乙個詞。例如」abc.#」匹配」abc.def.ghi」,」abc.*」只匹配」abc.def」。還有一種不需要key的,叫做fanout交換機,它採取廣播模式,乙個訊息進來時,投遞到與該交換機繫結的所有佇列。
rabbitmq支援訊息的持久化,也就是資料寫在磁碟上,為了資料安全考慮,我想大多數使用者都會選擇持久化。訊息佇列持久化包括3個部分:
(1)exchange持久化,在宣告時指定durable => 1
(2)queue持久化,在宣告時指定durable => 1
(3)訊息持久化,在投遞時指定delivery_mode => 2(1是非持久化)
如果exchange和queue都是持久化的,那麼它們之間的binding也是持久化的。如果exchange和queue兩者之間有乙個持久化,乙個非持久化,就不允許建立繫結。
整合
對於ios來說網上很少有關於mq的使用與整合,所以今天我就寫這一篇日誌來說一下簡單mq整合。
使用cocoapods插入庫檔案
pod
'rmqclient', '~> 0.9.0' (注:如果插入失敗,則使用
pod'rmqclient',
)執行
pod install
直接上**:
匯入標頭檔案 oc版本
#import
傳送訊息:(簡單的傳送訊息,具體還要配合後台使用共同的方式和佇列)
- (void)send接收訊息:- (void)receive ];當然還有其他方式傳送和接收要求和後台對應 具體可以參照這有詳細說明我在這就不過多說了。
java EasyExcel整合及工具類使用
com.alibaba easyexcel 1.1.2 beta5 實體類繼承baserowmodel 對需要匯出或者匯入的字段增加 excelproperty註解,index值為對應excel中的列,value為表頭,format為日期格式化 public class persondto exte...
java EasyExcel整合及工具類使用
com.alibaba easyexcel 1.1.2 beta5 實體類繼承baserowmodel 對需要匯出或者匯入的字段增加 excelproperty註解,index值為對應excel中的列,value為表頭,format為日期格式化 public class persondto exte...
Android AutoLayout整合使用
由於android螢幕尺寸眾多的情況,android適配一直是個問題,谷歌推出了百分比布局,本人有使用,但是百分比布局在部分時候適配並不是那麼完美,偶然機會看到鴻洋大神推出的autolayout,在公司也開始廣泛使用,本人也由百分比布局轉為autolayout,大神寫的帖子太深奧,使用時候本菜鳥覺得...