Я совершенно не знаком с Kafka, и у меня проблемы с этим.Настройка Kafka с докере с использованием kafka-rb для клиентов
У меня после установки с «wurstmeister/Кафка-докер» для грузчиком с помощью докер-Compose:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
links:
- zookeeper:zk
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.59.103
# KAFKA_AUTO_CREATE_TOPCIS_ENABLE: 'true'
KAFKA_CREATE_TOPICS: "events:1:1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Для производителя и потребителя, я использую рубиновый камень «Кафка-Р.Б.».
Производитель:
require 'kafka'
producer = Kafka::Producer.new({
host: "192.168.59.103",
port: 9092,
topic: "events"
})
1000000.times do |i|
message = Kafka::Message.new("Message #{i}")
producer.push(message)
end
Потребитель:
требует 'Кафка'
consumer = Kafka::Consumer.new({
host: "192.168.59.103",
port: 9092,
topic: "events"
})
consumer.loop do |messages|
puts "Received"
puts messages
end
Но я все еще получаю отказавшееся соединение или сообщение об ошибке:
[2015-07-15 09:50:49,769] ERROR Closing socket for /192.168.59.3 because of error (kafka.network.Processor)
kafka_1 | java.nio.BufferUnderflowException
kafka_1 | at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:145)
kafka_1 | at java.nio.ByteBuffer.get(ByteBuffer.java:692)
kafka_1 | at kafka.api.ApiUtils$.readShortString(ApiUtils.scala:38)
kafka_1 | at kafka.api.LeaderAndIsrRequest$.readFrom(LeaderAndIsrRequest.scala:108)
kafka_1 | at kafka.api.RequestKeys$$anonfun$5.apply(RequestKeys.scala:43)
kafka_1 | at kafka.api.RequestKeys$$anonfun$5.apply(RequestKeys.scala:43)
kafka_1 | at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:50)
kafka_1 | at kafka.network.Processor.read(SocketServer.scala:450)
kafka_1 | at kafka.network.Processor.run(SocketServer.scala:340)
kafka_1 | at java.lang.Thread.run(Thread.java:701)
Есть ли что-то е неправильно вписывается в настройку? Спасибо
Должен ли ваш потребитель также подключиться к Zookeeper, а не к Кафке? –
На самом деле мне нужно подключиться к Zookeeper, но я использовал неправильную библиотеку. Поскольку этот человек по-настоящему не заботится о Zookeeper в середине, но это делает: https://github.com/joekiller/jruby-kafka –