消息處理方法、裝置、控制器及系統與流程
2023-12-04 13:33:41 2

本發明涉及消息處理技術領域,尤其涉及一種消息處理方法、裝置、控制器及系統。
背景技術:
不同消息系統間的消息處理和轉發可通過消息中間件實現。通過消息中間件進行消息處理,實際是對消息進行直存直取,也就是每從消息源系統接收到一個消息便將其轉發至對應的目標消息系統中。
然而不同目標消息系統需實現不同的業務功能,僅採用消息中間件,便難以實現對多種目標消息系統對應的業務需求。為實現滿足不同的業務需求,可通過集中式消息服務實現消息的統一處理和轉發,通過定義多種不同業務對應的規則執行。在該集中式消息服務處理過程中,每條消息需經過所有業務對應的規則。
隨著應用數量的線性增長,針對各應用的消息量也大量增加,通過集中式消息服務進行消息處理的性能難以得到有效提高,從而使得消息處理的複雜度較高。
技術實現要素:
本發明提供一種消息處理方法、裝置、控制器及系統,以降低消息處理的複雜度。
本發明提供一種消息處理方法,包括:
接收消息源系統發送的源消息;
從預設的消息隊列集群中確定所述源消息對應的第一類規則隊列;
根據所述源消息對應的第一類規則隊列中的至少一個第一類規則依次對所述源消息進行處理;
從所述消息隊列集群中確定所述處理後的消息對應的第二類規則隊列;所述第一類規則隊列和所述第二規則隊列為不同類型的規則隊列;
根據所述處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對所述處理後的消息進行處理,得到目標消息;
將所述目標消息發送至消息目標系統。
本發明還提供一種消息處理裝置,包括:
接收模塊,用於接收消息源系統發送的源消息;
第一確定模塊,用於從預設的消息隊列集群中確定所述源消息對應的第一類規則隊列;
第一處理模塊,用於根據所述源消息對應的第一類規則隊列中的至少一個第一類規則依次對所述源消息進行處理;
第二確定模塊,用於從所述消息隊列集群中確定所述處理後的消息對應的第二類規則隊列;
第二處理模塊,用於根據所述處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對所述處理後的消息進行處理,得到目標消息;
發送模塊,用於將所述目標消息發送至消息目標系統。
本發明還提供一種控制器,包括:存儲器和處理器;所述存儲器與所述處理器連接;
所述存儲器用於存儲程序指令;
所述處理器,用於調度所述存儲器中的所述程序指令,用以執行上述所述的消息處理方法。
本發明還提供一種消息處理系統,包括:消息源系統、控制器和消息目標系統;其中,所述消息源系統與所述控制器連接,所述控制器還與所述消息目標系統連接;
所述消息源系統用於向所述控制器發送源消息;
所述控制器,用於從預設的消息隊列集群中確定所述源消息對應的第一類規則隊列;根據所述源消息對應的場景規則隊列中的至少一個第一類規則依次對所述源消息進行處理;從所述消息隊列集群中確定所述處理後的消息對應的第二類規則隊列;根據所述處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對所述處理後的消息進行處理,得到目標消息;並將所述目標消息發送至消息目標系統。
本發明提供的消息處理方法、裝置、控制器及系統,可在接收到消息源系統發送的源消息後,可從預設的消息隊列集群中確定該源消息對應的第一類規則隊列,並根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理;從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列,根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息;繼而將該目標消息發送至消息目標系統。該消息處理方法中,針對每個源消息,只需根據該源消息對應的第一類規則隊列中的規則進行處理,並根據確定的該處理後的消息對應的第二類規則隊列中的規則進行處理,而無需經過所有的業務規則進行處理,從而減小了消息處理的複雜度。
附圖說明
圖1為本發明的一種消息處理系統的結構示意圖;
圖2為本發明提供的一種消息處理方法的流程圖;
圖3為本發明提供的一種消息處理方法的流程圖;
圖4為本發明提供的一種消息處理裝置的結構示意圖;
圖5為本發明提供的一種控制器的結構示意圖;
圖6為本發明提供的另一種消息處理系統的結構圖。
具體實施方式
這裡將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發明的一些方面相一致的裝置和方法的例子。
本發明提供的各消息處理方法、裝置及控制器,可適用於消息處理系統中。該消息處理方法可根據確定的源消息對應的第一類規則隊列中的至少一個第一類規則對該源消息進行處理,並根據確定該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理得到目標消息,繼而發送至消息目標系統,可使得該目標消息既可實現該源消息對應的第一類規則隊列所對應的原子服務,也可實現該處理後的消息對應的跌類規則隊列所對應的原子服務。也就是說,該消息處理系統既可實現第一類規則隊列對應的原子服務,也可實現第二類規則隊列對應的原子服務,因而該消息處理系統也可稱為分布式消息服務系統。其中,該第一類規則隊列可以為場景規則隊列,該第一類規則隊列包括包括的每個第一類規則為場景規則;該第二類規規則隊列為消費規則隊列,該第二類規則隊列包括包括的每個第二類規則為消費規則。
圖1為本發明的一種消息處理系統的結構示意圖。如圖1所示,消息處理系統可包括:消息源系統101、控制器102、消息目標系統103。消息源系統101可將源消息發送至控制器102中,控制器102可對該源消息進行處理後得到目標消息消息,將該目標消息發送至消息目標系統103。消息源系統101和消息目標系統103中的傳輸的每個消息均需經過控制器102,由控制器進行處理,因而,控制器102還可以稱為消息中心控制器。
其中,控制器102可存儲有預設的消息隊列集群,該消息隊列集群中包括至少一個第一類規則隊列,和,至少一個第二類規則隊列。該第一類規則隊列和該第二規則隊列分別為不同類型的規則隊列。其中,每個第一類規則隊列包括依次排列的至少一個第一類規則,每個第二類規則隊列包括依次排列的至少一個第二類規則。每一類規則隊列對應一個服務,無論是第一類規則隊列對應的第一類服務,還是第二類規則隊列對應的第二類服務,所有的服務均可註冊在該控制器102上,只有註冊在控制器102上的服務才可運行。因此,控制器102可稱為所有服務的中央,控制器102可對所有服務的基本信息和運行情況進行統一監控,實現合理的服務布局。需要說明的是,控制器102上註冊的每個服務可以為原子服務如分布式原子服務。
本發明提供的各消息處理方法可由圖1所示的控制器102執行,控制器102在接收到消息源系統101發送的源消息後,可從預先存儲的消息隊列集群中確定該源消息對應的第一類規則隊列,並根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理,實現該源消息對應的第一類規則隊列所對應的服務的運行;還從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列;根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,實現運行該源消息對應的第二類規則隊列所對應的服務的運行,得到目標消息;繼而將該目標消息發送至消息目標系統。
該消息處理方法中,針對每個源消息,只需根據該源消息對應的第一類規則隊列中的規則進行處理,並根據確定的該處理後的消息對應的第二類規則隊列中的規則進行處理,而無需經過所有的業務規則進行處理,從而減小了消息處理的複雜度。
如下通過多個實例對本發明的消息處理方法進行說明。
圖2為本發明提供的一種消息處理方法的流程圖。如圖2所示,該方法可包括:
S201、接收消息源系統發送的源消息。
S202、從預設的消息隊列集群中確定該源消息對應的第一規則隊列。
具體地,該預設的消息隊列集群可以為控制器中所存儲的消息隊列集群。該消息隊列集群中包括至少一個第一類規則隊列,和,至少一個第二類規則隊列,因而,該消息隊列集群可以為消息的規則隊列集群。該S202中可以是根據該源消息,從該預設的消息隊列集群中的至少一個第一類規則隊列中確定該源消息對應的第一類規則隊列。可選的,該第一類規規則隊列可以為場景規則隊列,該第一類規則隊列包括包括的每個第一類規則為場景規則。舉例來說,若第一類規則隊列為場景規則隊列,該消息隊列集群中可包括場景規則隊列1、場景規則隊列2……場景規則隊列N,通過執行該S202中所確定該源消息對應的第一類規則隊列可以為場景規則隊列2。
S203、根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理。
具體地,該S203中可以是採用該源消息對應的第一類規則隊列的規則排列順序,根據該至少一個第一類規則依次對該源消息進行處理,從而實現該源消息對應的第一類規則隊列所對應的服務。
需要說明的是,在執行如上所述的S203中根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理之前,該方法還可包括:
判斷該源消息對應的第一類規則隊列所對應的服務是否已註冊。
若該源消息對應的第一類規則隊列所對應的服務已註冊,則根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理;反之,若該源消息對應的第一類規則隊列所對應的服務未註冊,則無法根據第一類規則對該源消息進行處理,並向消息源系統返回提示信息,以指示服務未註冊,從而無法根據第一類規則進行消息處理。
在一種可選的實例中,該方法中可以是通過檢測該源消息對應的第一類規則隊列是否具有註冊標識,若是,則可確定該源消息對應的第一類規則隊列所對應的服務已註冊;若否,則可確定該源消息對應的第一類規則隊列所對應的服務未被註冊。
在另一種可選的實例中,該方法中還可以是通過確定每個已註冊的服務所對應的第一類規則隊列與該源消息對應的第一類規則隊列是否一致。若已註冊服務中存在一個服務,其對應的第一類規則隊列與該源消息對應的第一類規則隊列一致,則可確定該源消息對應的第一類規則隊列所對應的服務已註冊;若每個已註冊的服務所對應的第一類規則隊列與該源消息對應的第一類規則隊列均不一致,則可確定該源消息對應的第一類規則隊列所對應的服務未被註冊。
舉例來說,若該源消息對應的第一類規則隊列為場景規則隊列2,則該方法中可以是採用場景規則隊列2的規則排列順序,根據該場景規則隊列2中的至少一個場景規則依次對該源消息進行處理,從而實現場景規則隊列2對應的場景服務。為保證根據場景規則隊列2對該源消息處理,可實現對應的服務,使得控制器精確對所有服務的基本信息和運行情況進行統一監控,實現合理的服務布局,該方法中需確定該場景規則隊列2對應的服務是否註冊,若是,則根據該場景規則隊列2中的至少一個場景規則依次對該源消息進行處理。
S204、從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列。
具體地,該S204中可以是根據該處理後的消息,從該消息隊列集群中的至少一個第二類規則隊列中確定該處理後的消息對應的第二類規則隊列。可選的,該第二類規規則隊列可以為消費規則隊列,該第二類規則隊列包括包括的每個第二類規則為消費規則。舉例來說,若第二類規則隊列為消費規則隊列,該消息隊列集群中可包括消費規則隊列1、消費規則隊列2……消費規則隊列N,通過執行該S204中所確定該處理後的消費規則隊列可以為消費規則隊列3。
S205、根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息。
具體地,該S205中可以是採用該處理後的消息對應的第二類規則隊列的規則排列順序,根據該至少一個第二類規則依次對該處理後的消息進行處理,從而實現該處理後的消息對應的第二類規則隊列所對應的服務。
需要說明的是,在執行如上所述的S205中根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息之前,該方法還可包括:
判斷該處理後的消息對應的第二類規則隊列所對應的服務是否已註冊。
若該處理後的消息對應的第二類規則隊列所對應的服務已註冊,則根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理;反之,若該處理後的消息對應的第二類規則隊列所對應的服務未註冊,則無法根據第二類規則對該處理後的消息進行處理,並向消息源系統返回提示信息,以指示服務未註冊,從而無法根據第二類規則進行消息處理。
具體如何判斷該處理後的消息對應的第二類規則隊列所對應的服務是否已註冊的實現過程,與上述判斷該源消息對應的第一類規則隊列所對應的服務是否已註冊的實現過程類似,在此不再贅述。
舉例來說,若該處理後的消息對應的第二類規則隊列為消費規則隊列3,則該方法中可以是採用消費規則隊列3的規則排列順序,根據該消費規則隊列3中的至少一個消費規則依次對該處理後的消息進行處理,從而實現消費規則隊列3對應的消費服務。為保證根據消費規則隊列3對該處理後的消息處理,可實現對應的服務,使得控制器精確對所有服務的基本信息和運行情況進行統一監控,實現合理的服務布局,該方法中需確定該消費規則隊列3對應的服務是否註冊,若是,則根據該消費規則隊列3中的至少一個消費規則依次對該處理後的消息進行處理。
S206、將該目標消息發送至消息目標系統。
本發明提供的消息處理方法,可在接收到消息源系統發送的源消息後,可從預設的消息隊列集群中確定該源消息對應的第一類規則隊列,並根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理;從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列,根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息;繼而將該目標消息發送至消息目標系統。該消息處理方法中,針對每個源消息,只需根據該源消息對應的第一類規則隊列中的規則進行處理,並根據確定的該處理後的消息對應的第二類規則隊列中的規則進行處理,而無需經過所有的業務規則進行處理,從而減小了消息處理的複雜度。
由於該方法降低了針對每個源消息的處理複雜度,因而該方法還可有效保證隨著應用數量的增長帶來的消息量的增加情況下的消息處理性能。
該方法中,可通過一種類型的一個規則隊列對應一個服務,如原子服務,可通過動態配置規則隊列動態擴展對應的服務,實現消息服務的動態擴展。例如可服務的性能配置對應的規則隊列,如對於處理時間短的消息服務,可配置較少的原子服務個數保證性能;相反地,對於處理時間長的消息服務,可通過配置較多的原子服務個數保證性能。
由於該方法中,將不同類型的規則隊列獨立部署,實現不同的服務,即採用了原子服務的分布式部署,即便某個規則隊列失效即某個規則對應的原子服務失效,也不會響應其它規則隊列,從而不會響應整體服務的失效,保證了消息處理系統所提供的消息服務的健壯性。
可選的,如上所述的所述源消息包括:第一類型標識(Identity,簡稱ID);該預設的消息隊列集群包括:至少一個第一類規則隊列。如上所述的S202中從預設的消息隊列集群中確定該源消息對應的第一規則隊列,可以包括:
根據該第一類型ID,從該至少一個第一類規則隊列中確定該源消息對應的第一類規則隊列。
具體地,該方法中,可以是根據該第一類型ID,從至少一個第一類規則隊列中,確定該第一類型ID所對應的規則隊列為該源消息對應第一類規則隊列。該第一類型ID所對應的規則隊列還可稱為該第一類型ID所定義的規則鏈。第一類型ID可以為場景ID,該第一類規則隊列可以為場景規則隊列。該方法中,根據該第一類型ID,確定該第一類型ID所對應的規則隊列為該源消息對應第一類規則隊列,提高了確定規則隊列的靈活性,從而提高消息處理的靈活性;該方法中僅可根據確定的該源消息對應第一類規則隊列進行消息處理,而無需根據其他第一類規則隊列進行消息處理,因而,還降低針對不同規則隊列,即不同原子服務進行消息處理的負載。
可選的,該處理後的消息包括:第二類型ID;該預設的消息隊列集群包括:至少一個第二類規則隊列。如上所述的S204中從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列,可包括:
根據該第二類型ID,從該至少一個第二類規則隊列中確定該源消息對應的第二類規則隊列。
該方法中,可以是根據該第二類型ID,從至少一個第二類規則隊列中,確定該第二類型ID所對應的規則隊列為該源消息對應第二類規則隊列。該第二類型ID所對應的規則隊列還可稱為該第二類型ID所定義的規則鏈。第二類型ID可以為消費ID,該第二類規則隊列可以為消費規則隊列。該方法中,根據該第二類型ID,確定該第二類型ID所對應的規則隊列為該處理後的消息對應第二類規則隊列,也可提高確定規則隊列的靈活性,從而提高消息處理的靈活性;該方法中僅可根據確定的該源消息對應第二類規則隊列進行消息處理,而無需根據其他第二類規則隊列進行消息處理,因而,還降低針對不同規則隊列,即不同原子服務進行消息處理的負載。
可選的,本發明還提供一種消息處理方法。圖3為本發明提供的一種消息處理方法的流程圖。如圖3所示,該方法可包括:
S301、接收消息源系統發送的源消息,該源消息可包括:場景ID和消費ID。
S302、根據該場景ID,從預設的消息隊列集群中的至少一個場景規則隊列中,確定該場景ID對應的場景規則隊列為該源消息對應的場景規則隊列。
S303、根據該源消息對應的場景規則隊列中的至少一個場景規則依次對該源消息進行處理,得到處理後的消息,該處理後的消息包括該消費ID。
S304、根據該消費ID,從預設的消息隊列集群中的至少一個消費規則隊列中,確定該消費ID對應的消費規則隊列為該處理後的消息對應的消費規則隊列。
S305、根據該處理後的消息對應的消費規則隊列中的至少一個消費規則依次對該處理後的消息進行處理,得到目標消息。
S306、將該目標消息發送至消息目標系統。
本發明提供的消息處理方法,可在接收到消息源系統發送的源消息後,可從預設的消息隊列集群中確定該源消息對應的場景規則隊列,並根據該源消息對應的場景規則隊列中的至少一個場景規則依次對該源消息進行處理;從該消息隊列集群中確定該處理後的消息對應的消費規則隊列,根據該處理後的消息對應的消費規則隊列中的至少一個消費規則依次對該處理後的消息進行處理,得到目標消息;繼而將該目標消息發送至消息目標系統。該消息處理方法中,針對每個源消息,只需根據該源消息對應的場景規則隊列中的規則進行處理,並根據確定的該處理後的消息對應的消費規則隊列中的規則進行處理,而無需經過所有的業務規則進行處理,從而減小了消息處理的複雜度。
本發明還提供一種消息處理裝置。該消息處理裝置可通過軟體和/或硬體的方式實現,用以執行上述圖2或圖3中任一所述的消息處理方法。圖4為本發明提供的一種消息處理裝置的結構示意圖。如圖4所示,該消息處理裝置400可包括:
接收模塊401,用於接收消息源系統發送的源消息。
第一確定模塊402,用於從預設的消息隊列集群中確定該源消息對應的第一類規則隊列。
第一處理模塊403,用於根據該源消息對應的第一類規則隊列中的至少一個第一類規則依次對該源消息進行處理,
第二確定模塊404,用於從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列。
第二處理模塊405,用於根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息。
發送模塊406,用於將該目標消息發送至消息目標系統。
可選的,該源消息可包括:第一類型ID;該預設的消息隊列集群包括:至少一個第一類規則隊列。
第一確定模塊402,具體用於根據該第一類型ID,從該至少一個第一類規則隊列中確定該源消息對應的第一類規則隊列。
可選的,該處理後的消息包括:第二類型ID;該預設的消息隊列集群包括:至少一個第二類規則隊列。
第二確定模塊404,具體用於根據該第二類型ID,從該至少一個第二類規則隊列中確定該源消息對應的第二類規則隊列。
可選的,該第一類規規則隊列為場景規則隊列,該第一類規則為場景規則;
該第二類規規則隊列為消費規則隊列,該第二類規則為消費規則。
本發明所提供的消息處理裝置,可執行上述圖2或圖3中任一所述的消息處理方法,其具體的實現過程及有益效果可參見上述,在此不再贅述。
本發明還提供一種控制器。該控制器中可集成有如上圖4所示的消息處理模塊,用以執行上述圖2或圖3中任一所述的消息處理方法。圖5為本發明提供的一種控制器的結構示意圖。如圖5所示,控制器500包括:存儲器501和處理器502;存儲器501與處理器502連接。
存儲器501用於存儲程序指令。
處理器502,用於調用存儲器501中的程序指令,用以執行上述圖2或3項所述的消息處理方法。
本發明所提供的控制器,可執行上述圖2或圖3中任一所述的消息處理方法,其具體的實現過程及有益效果可參見上述,在此不再贅述。
本發明還提供一種消息處理系統。圖6為本發明提供的另一種消息處理系統的結構圖。如圖6所示,消息處理系統600,可包括:消息源系統601、控制器602和消息目標系統603;其中,消息源系統601與控制器602連接,控制器602還與消息目標系統603連接。
其中,消息源系統601用於向控制器602發送源消息。
控制器602,用於從預設的消息隊列集群中確定該源消息對應的第一類規則隊列;根據該源消息對應的場景規則隊列中的至少一個第一類規則依次對該源消息進行處理;從該消息隊列集群中確定該處理後的消息對應的第二類規則隊列;根據該處理後的消息對應的第二類規則隊列中的至少一個第二類規則依次對該處理後的消息進行處理,得到目標消息;並將該目標消息發送至消息目標系統603。
可選的,該源消息包括:第一類型ID;該預設的消息隊列集群包括:至少一個第一類規則隊列。
控制器602,具體用於根據該第一類型ID,從該至少一個第一類規則隊列中確定該源消息對應的第一類規則隊列。
可選的,該處理後的消息包括:第二類型ID;該預設的消息隊列集群包括:至少一個第二類規則隊列。
控制器602,具體用於根據該第二類型ID,從該至少一個第二類規則隊列中確定該源消息對應的第二類規則隊列。
可選的,該第一類規規則隊列為場景規則隊列,該第一類規則為場景規則;該第二類規規則隊列為消費規則隊列,該第二類規則為消費規則。
本發明所提供的消息處理系統,可執行上述圖2或圖3中任一所述的消息處理方法,其具體的實現過程及有益效果可參見上述,在此不再贅述。
最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。