2016-12-29 4 views
1

В моей IDE я могу использовать приложение для загрузки весны, которое создало бы сообщение (с Kafkaproducer) внешнему брокеру kafka. Но как только я разместил мое приложение для загрузки в контейнере докеров, мое приложение больше не может отправлять брокеру. Вот сообщение об ошибке:Публикация сообщения внешнему Kafka Broker из контейнера-докера

o.s.k.support.LoggingProducerListener: Exception thrown when sending a message with key='null' and payload='....' to topic Category: 
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 
    org.springframework.kafka.core.KafkaProducerException: 
Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 

, что я использовал для запуска докер был: docker run -p 9001:9001 -d image_name, в котором 9001 моя весна-загрузочный порт, я могу разместить в порт, так что, как только мое сообщение было отправлено, он не дойдет до внешнего брокера. Я думаю, что у меня есть общая концепция, что контейнеры Docker живут в изолированных местах, где вам нужно открыть/отобразить порт для доступа к нему (например, my -p 9002: 9002), но работает ли он так же, как и для доступа из контейнера? если да, может кто-нибудь, пожалуйста, покажите мне, как я могу запустить контейнер докеров, чтобы иметь доступ к внешнему брокеру (скажем, URL-адрес брокера «192.168.1.1:9000»)? Я не думаю, что сейчас я могу что-то изменить в брокере, но я полагаю, что если я смогу получить доступ через свою среду IDE, почему бы не сделать докеры? Спасибо за помощь!

ответ

1

Это было связано с моим ip-forwarding = 0, после включения я могу выполнить исходящий запрос.