全部產品
Search
文件中心

ApsaraMQ for Kafka:使用雲訊息佇列 Kafka 版時用戶端的報錯及解決方案

更新時間:Feb 28, 2025

在使用雲訊息佇列 Kafka 版時,用戶端可能報錯,您可以根據報錯訊息匹配對應的解決方案。

詳細資料

報錯資訊對應的詳細資料如下。

報錯資訊

用戶端語言類型

報錯原因

解決方案

TimeoutException

Java

  • 網路問題

  • 用戶端鑒權(sasl.mechanisms)失敗

說明

該報錯僅出現在雲訊息佇列 Kafka 版的公網執行個體中。

run out of brokers

Go

Authentication failed for user

Python

Leader is not available

所有

Topic初始化時會短暫報該錯誤。如果持續報錯,可能是因為沒有建立Topic。

  1. 登入。

  2. 檢查Topic是否已經建立。

  3. 如果未建立,請先建立Topic。具體資訊,請參見步驟一:建立Topic

leader is in election

array index out of bound exception

Java

Spring Cloud會按自己的格式解析訊息內容。

參考如下兩種解決方案:

  • 推薦同時使用Spring Cloud發送和消費。

  • 如果您使用其他方式發送,例如,調用原生Java用戶端發送,通過Spring Cloud消費時,需要設定headerModeraw,即禁用解析訊息內容。具體資訊,請參見Spring Cloud官網

No such configuration property: "sasl.mechanisms"

  • C++

  • 封裝C++的用戶端,例如,PHP、Node.js等。

SASL和SSL模組未安裝或安裝異常。

參考如下命令安裝SASL和SSL模組:

說明

此處以CentOS系統為例,其他系統請查閱相關官網或者第三方搜尋引擎。

  • 安裝SSL:sudo yum install openssl openssl-devel

  • 安裝SASL:sudo yum install cyrus-sasl{,-plain}

No worthy mechs found

No KafkaClient Entry

Java

未找到kafka_client_jaas.conf設定檔。

準備好kafka_client_jaas.conf檔案,放在任意目錄下,這裡假設為/home/admin。Java的安全登入設定是系統性的,有如下兩種設定方法:

  • 設定系統變數:

    • 通過設定JVM參數:-Djava.security.auth.login.config=/home/admin/kafka_client_jaas.conf

    • 通過代碼設定:System.setProperty("java.security.auth.login.config","/home/admin/kafka_client_jaas.conf")

      說明

      如果在代碼中設定,請確保啟動用戶端之前代碼能夠被執行。

  • 配置系統檔案:在${JAVA_HOME}/jre/lib/java.security中增加內容:login.config.url.1=file:/home/admin/kafka_client_jaas.conf

更多資訊,請參見Oracle JAAS Login Configuration File

Error sending fetch request

Java

Consumer拉取訊息失敗報錯,可能的原因如下:

  • 網路問題

  • 拉取訊息逾時

  1. 確保servers配置正確。

  2. 通過telnet命令排除網路問題。

  3. 如果網路正常,可能是拉取訊息逾時引起。可以嘗試調整下列兩個參數,限制單次拉取的訊息量。

    • fetch.max.bytes:單次拉取操作,服務端返回的最大Bytes。

    • max.partition.fetch.bytes::單次拉取操作,服務端單個Partition返回的最大Bytes。

  4. 服務端流量限制,可以在的執行個體詳情頁面查看相應內容。

    • VPC訪問時查看峰值流量。

    • 公網訪問時查看公網流量。

DisconnectException

CORRUPT_MESSAGE

所有

  • 如果是雲端儲存引擎:用戶端版本大於等於3.0時,自動開啟等冪功能, 但云儲存不支援等冪功能

  • 如果是Local儲存引擎:發送compact訊息, 但未傳遞key值。

  • 如果是雲儲存引擎:在用戶端設定enable.idempotence=false

  • 如果是Local儲存引擎:訊息添加key值。