2016-12-29 1 views
1

Dans mon IDE, je suis en mesure d'utiliser une application Spring-Boot qui produirait un message (avec Kafkaproducer) à un courtier kafka externe. Mais une fois que j'ai hébergé mon application Spring-Boot dans le conteneur docker, mon application ne peut plus soumettre au courtier. Voici le message d'erreur:Publication d'un message à Kafka Broker externe à partir du conteneur docker

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. 

ce que je courais docker était: docker run -p 9001:9001 -d image_name où 9001 est mon port-boot de printemps, je suis en mesure de publier sur le port, juste qu'une fois mon message a été envoyé, il n'arrivera pas au courtier externe. Je pense que j'ai le concept général que les conteneurs Docker vivent dans des terres isolées où vous devez ouvrir/mapper le port pour y accéder (comme mon -P 9002: 9002), mais fonctionne-t-il de la même manière pour accéder? du conteneur? Si c'est le cas, quelqu'un peut-il me montrer comment utiliser le conteneur docker pour pouvoir accéder au courtier externe (disons que l'URL du courtier est "192.168.1.1:9000")? Je ne pense pas que je suis capable de modifier quoi que ce soit sur le courtier maintenant, mais mon hypothèse est que si je peux accéder via mon IDE, pourquoi pas dans le docker? Merci pour votre aide!

Répondre

1

il était dû à mon ip-forwarding = 0, une fois qu'il est allumé, je suis en mesure de faire une demande sortante.