乙個使用者登入了系統,將傳送通知給積分系統集群和日誌系統集群,要求積分系統集群和日誌系統集群都能接收到完整的登入實現通知,類似於主題模式,同時在其中任乙個系統群中不能讓乙個訊息被集群中的多個系統重複處理,這類似於佇列模式。
子業務系統都有集群的可能性
同乙個訊息會廣播給關注該類訊息的所有子業務系統
同一類訊息在集群中被負載消費
業務的發生和訊息的發布最終一致性
不同業務系統分別處理同一訊息,同一業務系統負載處理同類訊息
解決訊息傳送時的一致性問題
解決訊息處理時的冪等性問題
基於訊息機制建立事件匯流排
問題:不同業務系統分別處理同一訊息,同一業務系統負載處理同類訊息
使用activemq的虛擬主題解決方案
發布者:
將訊息發布到乙個主題中,主題名以virtualtopic開頭,如virtualtopic.test
消費者:
從佇列中獲取資訊,在佇列名中表明自己身份,如consumer.a.virtualtopic.test,通過這種方式把主題中的訊息自動中轉到佇列中,由佇列負載處理
此流程類似於下圖:
使用記憶體日誌的解決方案
記憶體日誌可持久化到本地檔案,同時支援集群複製,若當前業務子系統掛掉也能保證訊息不丟失
所謂冪等,簡單地說,就是對介面的多次呼叫所產生的結果和呼叫一次是一致的。擴充套件一下,這裡的介面,可以理解為對外發布的http介面或者thrift介面,也可以是接收訊息的內部介面,甚至是乙個內部方法或操作。
消費者在接收訊息後,去記憶體日誌中查詢該訊息是否被處理過,若沒有,則呼叫業務進行處理,處理成功後更新記憶體日誌,確認訊息。
系統之間的訊息發布類似於事件,傳送者就是事件的發起人,消費者就是事件的影響人,這樣的架構方式稱為事件驅動。
事件驅動架構(eda)定義了乙個設計和實現乙個應用系統的方法學,在這個系統裡事件可傳輸於鬆散耦合的元件和服務之間。簡單來說一句話"有事我叫你,沒事別煩我"
事件驅動架構模型
首先有三個業務系統,使用乙個事件匯流排簡化業務系統之間的事件發布,業務系統b、c通過事件匯流排提供的方法進行事件註冊,業務發起系統a使用事件匯流排提供的方法發起事件,這樣事件匯流排就封裝了訊息的傳送和接收以及記憶體日誌的處理,但這樣事件匯流排還不具備訊息中介軟體的功能,所以事件匯流排還需定義乙個抽象的訊息提供者,再根據不同的訊息中介軟體提供具體的訊息提供者,比如"activemq等"
activemq訊息中間鍵
訊息中介軟體
1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...
訊息中介軟體
如何理解訊息中介軟體?訊息中介軟體是儲存訊息的乙個容器,與資料庫不同的是資料庫儲存的資料是可以被修改的,而訊息中介軟體一般不會被修改 訊息中介軟體在消費的生產者與消費者產生,相當於乙個中間人的角色,提供了路由保證訊息的傳遞,如果消費者不能及時接收,訊息會保留下來,知道消費者上線 保證在存活期內 訊息...
訊息中介軟體
訊息中介軟體是在訊息的傳輸過程中儲存訊息 訊息傳遞過程中不能更改 的容器。訊息中介軟體再將訊息從它的原中繼到它的目標時充當中間人的作用。訊息中介軟體的主要目的是提供路由並保證訊息的傳遞 如果傳送訊息時接收者不可用,訊息佇列會保留訊息,知道可以成功傳遞為止,當然,訊息佇列儲存訊息也是有期限的。訊息傳送...