剛開始看的時候,由兩個疑問,我自己的答案是這樣的
1.訊息佇列在系統中的最大個數,關於這個問題,書上有明確的答案;書上有個**列明了linux ,free bsd,mac os x ,solaris中的典型值。當然也可以通過一些手段來修改。sysctl就可以修改。
2.在多個執行緒(或程序)同時對乙個訊息佇列進行讀寫,是否需要同步?
書上沒有明確的答案,但是據猜測這個訊息佇列很容易設計成使用者層不需要做同步的乙個程序間通訊方法。所以答案應該是不需要同步(核心已經做了同步的處理);
後來寫了個測試程式,結果跟這個結論一致。(能看下核心對這部分的處理就更明確了)。
聖經上說:在新的應用上最好不要使用訊息佇列了。
提示出錯時的一些解決辦法:
報錯no space left on device
sysctl -w kernel.msgmni=128
sysctl 的使用可參見:
這條指令可以設定系統中同時執行的最大的message queue的個數
檢視當前系統訊息佇列的限制ipcs –l
ipcs工具是除錯訊息佇列乙個很不錯的工具。
ipcs的使用可參見:ipcs命令的使用
當然,任何指令最詳細和明確的還是man page
如何使用訊息佇列的事務訊息
發訊息 過程,往往是為通知另外乙個系統更新資料,mq的 事務 主要解決訊息生產者和訊息消費者的資料一致性問題。先把商品加到購物車 然後幾件商品一起下單 最後支付 完成購物流程,就可以愉快地等待收貨 該過程中有個需用mq。訂單系統建立訂單後,發訊息給購物車模組,將已下單商品從購物車刪除。從購物車刪除已...
RabbitMQ訊息佇列的使用
我們知道rabbitmq的exchange常用交換器型別分為fanout direct topic headers 4種型別,這裡我們將對fanout direct topic 3種型別以實際 的形式進行講解,至於關於交換器對各型別的具體講解,請參照文章開始給出的鏈結進行了解,這裡就不再贅述,我們新...
python訊息佇列的使用
由於erp系統需要跟倉庫之前使用的庫存統計資料一致,所以需要出入庫單據同步。本來是想在資料庫上建立乙個觸發器,只要有新增記錄,便通過介面傳入另一方。但是這樣做的弊端就是,當伺服器拓機時正有資料進行傳輸,那麼這個時間段的資料,將獲取不到。所以啟用了訊息佇列,即便伺服器拓機,沒有處理的資料仍會得到保留。...