簡體   English   中英

如何解決Kafka Avro反序列化問題

[英]How to solve Kafka Avro deserializing problem

我們使用kafka avro消費者和生產者的應用程序有一個非常奇怪的行為。

我們有一台運行融合安裝的服務器。 全部都是手動配置的,因此不會使用融合的cli。

在第二台服務器上,正在運行一個應用程序,該應用程序使用此融合安裝來通過Kafka主題接收請求。 該請求被轉換為數據庫查詢,並發送回帶有特定數據的回復主題。

在第三台服務器上,存在另一個應用程序,該應用程序將該請求發送到2號服務器上的應用程序,並接收回復主題。

總結一下:服務器1(融合安裝)服務器2(請求使用者和答復生產者應用程序)服務器3(請求發送者和答復消費者應用程序)

我為我們開發了一個kafka API,所有人都在使用消費者和生產者以及融合的avro序列化器和解串器。 當我現在從服務器3上的應用程序生成請求主題時,服務器2上的應用程序接收到請求,將其轉換為數據庫查詢,然后發回與請求主題不同的回復主題。 現在,我在服務器3上的應用程序應該收到test-reply-topic並反序列化它。

我的test-reply-topic包含一個“ union {null,bytes}文件”字段。 因此,該字段是可選的,默認值為null,然后在注冊表中注冊架構。 現在,如果文件值為null,則會給我一個錯誤:

將偏移量為0的分區test-reply-topic-0的鍵/值反序列化時出錯。如果需要,請查找記錄以繼續使用。 原因:錯誤反序列化ID為6的Avro消息詳細:發現為空,期望字節

如果它包含字節,則它正在工作。

奇怪的是,如果我在本地計算機上嘗試相同的操作,那么它將使用file = null和file = some字節。 所以我在生產者和消費者中使用相同的kafka代理,相同的API和相同的值。 它正在從服務器和本地計算機上的注冊表中請求相同的架構ID。

也許有人暗示了這個問題可能是什么,我幾天以來一直在尋找這個問題,卻沒有找到解決方案。

提前謝謝了!

抱歉這么晚才回復。 結果發現,存在反序列化問題的應用程序使用了舊的生成的Java類。 因此,它使用了以前沒有聯合類型的舊模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM