本發明涉及大數據采集,具體涉及消息隊列處理方法、裝置、計算機設備及存儲介質。
背景技術:
1、在存在消息重傳,存在多條重復的消息或多條不同的消息時,如果消費者執行多條重復的消息,或者在前置消息未處理完的情況下錯誤地執行最后一條消息的業務邏輯,會導致業務邏輯不正確,甚至會導致業務流程中斷。
2、因此,亟需一種順序性的,可靠性較高的消息處理方法。
技術實現思路
1、因此,本發明要解決的技術問題在于克服相關技術中消息處理順序性較差、可靠性較差的問題。
2、為了解決上述技術問題,本發明提供的一種消息隊列處理方法,所述消息隊列處理方法包括:
3、接收目標采集器采集的待處理消息;所述待處理消息中包括所述目標采集器的采集器標識;所述目標采集器的采集器標識用于區分所述目標采集器和其他采集器;所述待處理消息為元數據;
4、將接收到的所述待處理消息根據時間順序存儲到消息隊列中;其中,在所述待處理消息為所述目標采集器采集的最后一條消息時,在所述待處理消息的消息標識位添加結尾標識;
5、通過消費者讀取所述消息隊列中的所述待處理消息,根據所述待處理消息的消息標識位確定所述待處理消息是否是最后一條消息;
6、在所述待處理消息是最后一條消息時,查詢待處理消息列表中的未執行完成的消息的相關信息;所述待處理消息列表用于存儲未執行完成的消息;所述相關信息包括采集器標識;
7、根據所述待處理消息列表中的未執行完成的消息的相關信息確定是否執行所述待處理消息對應的業務邏輯。
8、在一種可選的實施方式中,所述根據所述待處理消息的消息標識位確定所述待處理消息是否是最后一條消息,包括:
9、在所述待處理消息不是最后一條消息時,執行所述待處理消息對應的業務邏輯,并在完成執行所述待處理消息對應的業務邏輯時返回響應結果。
10、在一種可選的實施方式中,所述根據所述待處理消息列表中的未執行完成的消息的相關信息確定是否執行所述待處理消息對應的業務邏輯,包括:
11、根據所述待處理消息列表中的未執行完成的消息的相關信息確定所述待處理消息列表中是否存在所述目標采集器采集的未執行完成的消息;
12、在所述待處理消息列表中不存在所述目標采集器采集的未執行完成的消息時,執行所述待處理消息對應的業務邏輯,并在完成執行所述待處理消息對應的業務邏輯時返回響應結果。
13、在一種可選的實施方式中,所述根據所述待處理消息列表中的未執行完成的消息的相關信息確定所述待處理消息列表中是否存在所述目標采集器采集的未執行完成的消息,包括:
14、在所述待處理消息列表中存在所述目標采集器采集的未執行完成的消息時,跳過所述待處理消息對應的業務邏輯。
15、在一種可選的實施方式中,所述相關信息還包括:消費時間和轉組次數,所述方法還包括:
16、以預設時間間隔為周期讀取所述待處理消息列表中的未執行完成的消息的消費時間;
17、根據所述待處理消息列表中的未執行完成的消息的消費時間和預設時間確定所述待處理消息列表中是否存在第一目標消息;所述第一目標消息為所述消費時間大于所述預設時間的未執行完成的消息;
18、在所述待處理消息列表中存在第一目標消息時,對所述第一目標消息執行轉組操作,所述轉組次數加1,所述第一目標消息的消費時間重置為0。
19、在一種可選的實施方式中,所述根據所述待處理消息列表中的未執行完成的消息的消費時間和預設時間確定所述待處理消息列表中是否存在第一目標消息,包括:
20、在所述待處理消息列表中不存在第一目標消息時,根據所述待處理消息列表中的未執行完成的消息的轉組次數和預設次數確定所述待處理消息列表中是否存在第二目標消息;所述第二目標消息為所述轉組次數大于所述預設次數的未執行完成的消息;
21、在所述待處理消息列表中不存在第二目標消息時,重新通過消費者讀取所述消息隊列中的所述待處理消息,根據所述待處理消息的消息標識位確定所述待處理消息是否是最后一條消息。
22、在一種可選的實施方式中,所述根據所述待處理消息列表中的未執行完成的消息的轉組次數和預設次數確定所述待處理消息列表中是否存在第二目標消息,包括:
23、在所述待處理消息列表中存在第二目標消息時,確定所述第二目標消息對應的采集器消息采集失敗。
24、第二方面,本發明提供了一種消息隊列處理裝置,所述消息隊列處理裝置包括:
25、第一處理模塊,用于接收目標采集器采集的待處理消息;所述待處理消息中包括所述目標采集器的采集器標識;所述目標采集器的采集器標識用于區分所述目標采集器和其他采集器;所述待處理消息為元數據;
26、第二處理模塊,用于將接收到的所述待處理消息根據時間順序存儲到消息隊列中;其中,在所述待處理消息為所述目標采集器采集的最后一條消息時,在所述待處理消息的消息標識位添加結尾標識;
27、第三處理模塊,用于通過消費者讀取所述消息隊列中的所述待處理消息,根據所述待處理消息的消息標識位確定所述待處理消息是否是最后一條消息;
28、所述第三處理模塊包括第一處理單元,所述第一處理單元包括第一子處理單元和第二子處理單元;
29、所述第一子處理單元,用于在所述待處理消息是最后一條消息時,查詢待處理消息列表中的未執行完成的消息的相關信息;所述待處理消息列表用于存儲未執行完成的消息;所述相關信息包括采集器標識;
30、所述第二子處理單元,用于根據所述待處理消息列表中的未執行完成的消息的相關信息確定是否執行所述待處理消息對應的業務邏輯。
31、第三方面,本發明提供了一種計算機設備,包括:存儲器和處理器,存儲器和處理器之間互相通信連接,存儲器中存儲有計算機指令,處理器通過執行計算機指令,從而執行上述第一方面或其對應的任一實施方式的消息隊列處理方法。
32、第四方面,本發明提供了一種計算機可讀存儲介質,單個計算機可讀存儲介質上存儲有計算機指令,計算機指令用于使計算機執行上述第一方面或其對應的任一實施方式的消息隊列處理方法。
33、第五方面,本發明提供了一種計算機程序產品,包括計算機指令,計算機指令用于使計算機執行上述第一方面或其對應的任一實施方式的消息隊列處理方法。
34、本發明提供的技術方案,具有如下技術效果:
35、本發明實施例的技術方案通過將目標采集器采集的待處理消息按照時間順序存儲到消息隊列中,保證了消息的順序性。這種順序性在后續處理中非常關鍵,尤其是在處理有先后依賴關系的元數據時。例如,在一些數據處理流程中,如果元數據是關于某個業務流程不同階段的信息,按時間順序存儲可以確保處理順序與業務流程的實際發生順序一致,避免數據處理的混亂。每個待處理消息中包含采集器標識,這使得不同采集器采集的元數據能夠清晰區分。在復雜的多采集器環境下,有助于準確追蹤消息來源。當出現問題時(如數據異常或采集故障),可以快速定位到是哪個采集器產生的問題,便于針對性地排查和解決。在目標采集器采集的最后一條消息的消息標識位添加結尾標識,為后續處理流程提供了明確的標志。消費者讀取消息隊列中的待處理消息時,根據消息標識位確定是否是最后一條消息。這種基于標識的判斷方式使得消息處理邏輯更加靈活和準確。對于不是最后一條的消息,可以按照常規的業務邏輯進行處理,而對于最后一條消息則進行特殊處理,提高了消息處理的針對性。當待處理消息是最后一條消息時,查詢待處理消息列表中未執行完成的消息的相關信息(包括采集器標識)。這一步驟確保了在處理最后一條消息之前,整個采集過程的完整性。例如,如果前面的消息由于某些原因(如消費者臨時故障)未能完成處理,通過查詢可以知曉,避免在前置消息未處理完的情況下錯誤地執行最后一條消息的業務邏輯。根據待處理消息列表中的未執行完成的消息的相關信息來確定是否執行待處理消息對應的業務邏輯,保證了整個消息處理流程的連貫性和正確性。只有當所有前置消息都處理完成時,才執行最后一條消息的業務邏輯,避免了數據不一致或業務流程中斷的問題,提高了消息處理的可靠性。