[英]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.