1.一種基于kafka的處理消息的方法,其特征在于:模式信息作為消息頭信息的一部分隨消息一起發(fā)送,在消息傳輸時(shí)使用Apache Avro為消息傳輸格式。
2.根據(jù)權(quán)利要求1所述的基于kafka的處理消息的方法,其特征在于:該方法包括以下步驟:
(1)生產(chǎn)者應(yīng)用生成帶消息模式的消息;
(2)消息隊(duì)列kafka存儲(chǔ)帶消息模式的消息;
(3)消費(fèi)者應(yīng)用從kafka中獲取帶消息模式的消息并消費(fèi)消息。
3.根據(jù)權(quán)利要求2所述的基于kafka的處理消息的方法,其特征在于:該方法還包括步驟(4),如果生產(chǎn)者應(yīng)用生成的消息對(duì)應(yīng)的消息模式發(fā)生變更,消費(fèi)者應(yīng)用直接根據(jù)消息頭獲取到變更后的消息模式,并根據(jù)消息模式解析變更模式之后的消息。
4.根據(jù)權(quán)利要求3所述的基于kafka的處理消息的方法,其特征在于:所述步驟(1)中,消息模式封裝到消息頭里面,消息頭還包括消息UUID、加密細(xì)節(jié)、時(shí)間戳。
5.根據(jù)權(quán)利要求4所述的基于kafka的處理消息的方法,其特征在于:所述步驟(2)中,kafka中存儲(chǔ)的消息是帶消息模式的消息。
6.根據(jù)權(quán)利要求5所述的基于kafka的處理消息的方法,其特征在于:所述步驟(3)中,消費(fèi)者應(yīng)用從kafka中獲取帶消息模式的信息,先從消息頭里面拿到消息模式,然后通過消息模式解析消息內(nèi)容。
7.一種基于kafka的處理消息的方法,其特征在于:通過消息模式注冊(cè)服務(wù)來實(shí)現(xiàn)消息模式變更通知,對(duì)于上游生產(chǎn)者應(yīng)用生成的消息在發(fā)往kafka之前先到模式注冊(cè)服務(wù)Schema Registrar注冊(cè)并生成對(duì)應(yīng)的模式編號(hào),而隨消息一起傳遞的是從模式注冊(cè)服務(wù)獲取到的該消息模式對(duì)應(yīng)的編號(hào),當(dāng)下游消費(fèi)者應(yīng)用通過kafka獲取到消息時(shí),首先解析消息元數(shù)據(jù)信息,拿到消息模式編號(hào),如果應(yīng)用內(nèi)存中有模式編號(hào)對(duì)應(yīng)的模式信息,則根據(jù)模式信息解析消息,如果內(nèi)存中沒有模式編號(hào)對(duì)應(yīng)的模式信息,則應(yīng)用發(fā)起請(qǐng)求根據(jù)模式編號(hào)從模式注冊(cè)服務(wù)Schema Registrar中獲取模式信息,然后根據(jù)模式信息解析消息,并緩存該模式信息。
8.根據(jù)權(quán)利要求7所述的基于kafka的處理消息的方法,其特征在于:該方法包括以下步驟:
(a)生產(chǎn)者應(yīng)用生成消息并注冊(cè)消息模式;
(b)消息隊(duì)列kafka存儲(chǔ)帶消息模式編號(hào)的消息;
(c)消費(fèi)者應(yīng)用從kafka中獲取帶消息模式編號(hào)的信息并消費(fèi)消息。
9.根據(jù)權(quán)利要求8所述的基于kafka的處理消息的方法,其特征在于:該方法還包括步驟(d),如果生產(chǎn)者應(yīng)用生成的消息對(duì)應(yīng)的消息模式發(fā)生變更,則重新到消息模式注冊(cè)服務(wù)Schema Registrar注冊(cè),消費(fèi)者應(yīng)用獲取到消息新的模式編號(hào),通過模式編號(hào)獲取到信息的模式信息,通過新的模式信息解析消息內(nèi)容。
10.根據(jù)權(quán)利要求9所述的基于kafka的處理消息的方法,其特征在于:所述步驟(a)中,生產(chǎn)者應(yīng)用生成帶消息,并將消息模式注冊(cè)到消息模式注冊(cè)服務(wù)Schema Registrar,由模式注冊(cè)服務(wù)生成一個(gè)消息模式對(duì)應(yīng)的模式編號(hào),并將這個(gè)模式編號(hào)封裝到消息頭里面,消息頭還包括消息UUID、加密細(xì)節(jié)、時(shí)間戳,消息傳輸格式使用Avro。