2015-07-15 2 views
1

Я совершенно не знаком с 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) 

Есть ли что-то е неправильно вписывается в настройку? Спасибо

+0

Должен ли ваш потребитель также подключиться к Zookeeper, а не к Кафке? –

+0

На самом деле мне нужно подключиться к Zookeeper, но я использовал неправильную библиотеку. Поскольку этот человек по-настоящему не заботится о Zookeeper в середине, но это делает: https://github.com/joekiller/jruby-kafka –

ответ

0

Когда эта ошибка произошла, запустите изображение wurstmeister/zookeeper или когда вы пытаетесь произвести или использовать сообщение.

, почему он сообщает Closing socket for /192.168.59.3, должно ли оно быть 192.168.59.103, может ли попытаться выполнить ping или telnet сервер kafka в местах, где вы запускаете производителя и потребителя, чтобы узнать, можете ли вы с ним подключиться или нет.

Смежные вопросы