簡體   English   中英

通過python連接apache kafka API

[英]Connecting to apache kafka API through python

我一直在從這里閱讀 apache kafka API 文檔

這是我在 python 中創建的代碼,它是 TCP 連接到位於 9092 的 kafka 代理,所有服務器。屬性是 kafka 的默認值



import socket
import struct

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect the socket to the port where the server is listening
server_address = ('localhost', 9092)
sock.connect(server_address)



#int16=2bytes=h
#int32=4bytes=i
#int64=8bytes=q


def string_to_binary(topic):

    topics=bytearray()
    topics+=struct.pack(">h",len(topic)) #INT16
    topics+=bytes(topic,"utf-8")
    return topics
request_api_key,request_api_version,correlation_id=1,0,7
headers=bytearray()
headers+=struct.pack(">hhi",request_api_key,request_api_version,correlation_id)


replica_id,max_wait_ms,min_bytes=0,10,100
body=bytearray()
body+=struct.pack(">iii",replica_id,max_wait_ms,min_bytes)



topics=bytearray()
topics+=string_to_binary("messages")# topic name
topics+=struct.pack(">iqi",1,0,10)#  partition array

request=headers+body+topics
print("data is sent out")
sock.sendall(request)
# Receive the response
response = bytearray()
while True:
    print("waiting for data")
    data = sock.recv(1024)
    print("intermediate data which is blocking")
    if not data:
        break
    response += data
print(response)

此代碼用於獲取分區為 0 且偏移量為 0 的主題messages ,output 為空,這是來自 9092 的 kafka 代理日志的屏幕截圖在此處輸入圖像描述

所以是的 org.apache.kafka.common.network.InvalidReceiveException: 無效接收(大小 = 1919903841 大於 104857600)所以最大大小是 104857600 我去了並將2019903841更改為socket.request.max.bytes

那么這是新的錯誤在此處輸入圖像描述

有人對此有解決方案嗎?

提前致謝!

我的主要目標是連接到 apache kafka API。我想從特定偏移量的特定主題中獲取所有數據

從特定偏移量中的特定主題獲取所有數據

您已經可以使用kafka-python KafkaConsumer實例執行此操作,方法是assign一個主題分區並seek一個偏移量,然后poll數據

暫無
暫無

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

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