1. 程式人生 > >rabbitMq實現與zookeeper類似的watcher功能

rabbitMq實現與zookeeper類似的watcher功能

場景:A、B、C、D(可以是一個機器的不同程序,也可以是不同機器的程序)啟動了相同的專案,使用同一個資料庫。但是,如果A修改了資料庫的資料,需要B、C、D在很短的時間能夠知道資料庫發生了修改。當然可以在A、B、C、D上各啟動一個執行緒對資料庫進行監視,但是,這樣會消耗資料庫資源,不推薦採用這種方式。

解決方法:

1、使用ZK的watcher進行監視,此處不詳解。

2、使用rabbitMq的廣播模式進行監視。

3、其他訊息釋出訂閱框架

rabbitMq的廣播模式

1、建立連線工廠

2、生成佇列

3、生成廣播型別的交換機

4、繫結佇列與交換機

5、建立生產者進行訊息傳送

6、建立消費者對訊息進行消費

理解:

rabbitMq在廣播模式下,可以將訊息傳送給所有與廣播交換機繫結的佇列(人手一份,相同的訊息);

注意:此處的“人手一份”是指所有與交換機繫結的不同佇列,如果B、C、D使用的是同一個佇列,那麼只能有一個會收到訊息;

  因此,如果A、B、C、D使用的是同一個程式(例如web服務部署在不同的節點或者埠上),那麼為了保證它們監視的佇列不同,就需要在生成佇列時加入唯一識別符號(推薦UUID)

ps:程式碼就不貼了,網上有許多類似的程式碼。最後還是寫了一個demo,便於理解,詳情見下一篇博文。

相關推薦

rabbitMq實現zookeeper類似的watcher功能

場景:A、B、C、D(可以是一個機器的不同程序,也可以是不同機器的程序)啟動了相同的專案,使用同一個資料庫。但是,如果A修改了資料庫的資料,需要B、C、D在很短的時間能夠知道資料庫發生了修改。當然可以在A、B、C、D上各啟動一個執行緒對資料庫進行監視,但是,這樣會消耗資料庫資源,不推薦採用這種方式。 解決方法

Java實現ZooKeeper的連線

序言續上一篇的 ZooKeeper安裝執行  這裡採用ZooKeeper的Java API進行連線。Java實現新建一個類實現介面Watcher. 是指:This interface specifies the public interface an event handle

CentOS中實現Ubuntu下apt-get install build-essential功能類似的命令

ubun 工具 ubuntu 命令 方案 l命令 很多 直接 ubuntu下 CentOS中實現與Ubuntu下apt-get install build-essential功能類似的命令在Ubuntu中安裝完系統後,可以直接使用apt-get install build-

Python數據庫[2] -> 關系對象映射/ORM -> 利用 sqlalchemy 實現關系表查詢功能

none 標準 ica accounts like imp 函數 參數形式 char 利用 sqlalchemy 實現關系表查詢功能 下面的例子將完成一個通過關系表進行查詢的功能,示例中的數據表均在MySQL中建立,建立過程可以使用 SQL 命令或編寫 Python

轉: RabbitMQ實現中AMQPMQTT消息收發異同

開始 離線消息 現象 交換機 .html rabbit uci log www. 轉自:http://www.cnblogs.com/lucifer1997/p/9438186.html 實現了AMQP與MQTT(至多一次)後,用多個隊列以topic exchange的方式

ionic3 實現拍照從相簿選擇功能

參考了很多網上的資料,但是每個人遇到的問題都不一樣,我這裡出現的問題,可能是node版本,還有外掛版本之類的問題,問題以及解決方式可以看這個圖。 一、外掛依賴引入  (1)配置相機 在控制行輸入命令: ionic cordova plugin add cordova-

SpringBoot+RabbitMq實現生產者消費者的多種情景

一、新建maven工程:springboot-rabbitmq 二、引入springboot和rabbitmq的依賴  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3

powerpc_012_ADC功能實現測試

       ADC的驅動實現,其實最麻煩的不在於硬體原理,而在於管腳與通道的對映關係。幾種模式的ADC我覺得都是如此。即使是背後有一個再複雜的硬體實現,也基本不會妨礙我們進行功能程式碼的實現。        我用到的開發板上做了兩路輸入可調的AD,我暫且只用其中的一路。相

DEVOPS 運維開發系列五:基於Django過濾器實現自動化運維平臺功能模組的動態授權管理展示

1、關於Django過濾器 Django中提供了很多內建的過濾器和標籤,我們常用的例如下面這些: block(模板繼承) extends(模板繼承) filter(過濾器) for(迴圈) if(判斷) include(載入模板) 還有很多詳見官網

使用java操作zookeeper實現kafka-topics.sh的功能

使用java操作zookeeper實現kafka-topics.sh的功能 需求 程式碼如下 遇到的問題 需求 因為工作要求,需要對測試環境的kafka的所有topic增加分割槽。因為topic很多,所以手動使用命令列實現不太現實(寫這

Spring Boot 整合dubbozookeeper實現不同專案之間資料通過服務的傳遞

一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、

截圖截長圖功能實現

Demo在GitHub的地址: https://github.com/Hebin320/ScreenShoot Demo在CSDN上的下載地址: http://download.csdn.net/detail/hebin320320/9721970 在Andro

C#實現類似C++功能的困惑

我要實現一個功能,用C++表達如下: int g_iTest =0; // 全域性變數class A{A(int* pVal){m_pVal = pVal;}   //將指標記錄下來void Increase(){(*m_pVal)++;}}//A a(&g_iTest);a.Increase();

Cocos2d-x 3.x 頭像選擇器,本地相簿拍照+頭像編輯功能(Android、IOS雙平臺實現)

大連遊戲行業不是太發達,最後選擇在一家應用外包公司工作,在工作和業餘學習過程中積累了一點微不住道的經驗,希望分享給熱愛遊戲的小夥伴們。 在應用開發過程中會常常有使用者上傳頭像的功能,在網上找了N多資料發現沒有人具體介紹過該用cocos2d-x實現。這篇文章就來介紹一下如何在

基於JSON+JQuery實現的多條件篩選功能(類似京東和淘寶功能)

/**  * Author:mengbing  *   * Date:2017-12-08  * http://www.allenyMiky.com  *   */ (function ($) {     //初始化繫結事件     $(function () {             });     $.

android Launcher3中定製第三方apk圖示,實現類似主題功能

最近遇到在Launcher中對於指定的app需使用使用指定的圖示,實現類似於主題的功能。要實現這樣的功能就要弄清楚Launcher是如何載入app圖示的。首先定位到com.android.launcher3.IconCache.java這個類的cacheLocked()方法p

Django處理URL過程網站分頁功能實現

首先如題,django作為幾乎所有的python程式設計師都熟知的開源框架,那它是怎麼處理一個url的。原理是什麼。1.Django使用的是根URLconf模組。 這個值通常是通過ROOT_URLCONF設定 (在…/settings.py檔案中)。2.Django載入URL

WiFiAp探究實錄--功能實現原始碼分析

接下來要更新的博文是WiFi熱點相關的,更新時間為8月1號–8月30號之間。看到此博文的開發者們,如果有關於WiFi熱點的任何疑問可留言,最終會將值得研究的問題以及我已經研究出來的問題更新在博文上。 Android虐我千百遍,我待Android如初戀。

檔案上傳那些事兒:多圖上傳、大檔案上傳、斷點續傳功能實現分析

簡介 看了不少的教程,在系統整合搭建的過程中一般寫到檔案上傳這一節時,基本上實現一個檔案上傳功能就不再繼續拓展,而是就此截止轉而去講解其他的內容了,因為企業級應用開發中這些功能肯定會使用到,企業網站的檔案上傳不可能只有一個單圖上傳,也不可能不實現大檔案的功能處

Android實現二維碼掃描功能(二)-ZXing個性化近距離識別優化

簡介 本篇我們對掃碼介面進行優化,並對ZXing近距離無法識別的問題做出優化。 個性化定製 每個APP都有自己的表現形式,實現個性化掃碼介面定製,主要有兩個地方: activity_scanner.xml介面檔案 com.google.zxin