[ https://issues.apache.org/jira/browse/KAFKA-1494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14155113#comment-14155113 ]
Josh Rosen commented on KAFKA-1494: ----------------------------------- Hi Joe, Sorry for cluttering up this JIRA; I should have posted to the mailing list. I was _just_ about to hit 'send' on my message when I tried one more thing and stumbled on a solution for my issue: It turns out that publishing to auto-created topics seems to work in my setup (using the configurations tweaks suggested here); it was only publication to manually-created topics that was failing. The root problem turned out to be that I had created ZkClient without specifying a serializer, which seemed to allow certain ZK metadata operations to succeed even though the stored data didn't seem to be usable by the broker / producer. When I configured ZkClient to use ZKStringSerializer, the problem disappeared and I could publish data as expected. Hope this helps anyone who has run into a similar issue (and sorry for the clutter!). > Failed to send messages after 3 tries. > -------------------------------------- > > Key: KAFKA-1494 > URL: https://issues.apache.org/jira/browse/KAFKA-1494 > Project: Kafka > Issue Type: Bug > Components: controller, core > Affects Versions: 0.8.1.1 > Environment: Mac OS > Reporter: darion yaphets > Assignee: Neha Narkhede > > I use default server & zookeeper config to start-up zookeeper server and > kafka broker on my machine to test custom message which based on proto buffer > . I write a client to send protobuf-message to kafka broker and source code > as following : > Properties properties = new Properties(); > properties.put("serializer.class", > "java_example.ProtoBufMessage"); > properties.put("metadata.broker.list", "localhost:9092"); > ProducerConfig config = new ProducerConfig(properties); > testBuf buffer = testBuf.newBuilder().setID(0) > .setUrl("darion.yaphet.org").build(); > Producer<String, testBuf> producer = new Producer<String, > testBuf>( > config); > producer.send(new KeyedMessage<String, testBuf>("protobuffer", > buffer)); > client debug log report a exception: > [FileSystemMoniter] INFO [main] kafka.utils.Logging$class.info(68) | > Disconnecting from localhost:9092 > [FileSystemMoniter] DEBUG [main] kafka.utils.Logging$class.debug(52) | > Successfully fetched metadata for 1 topic(s) Set(protobuffer) > [FileSystemMoniter] WARN [main] kafka.utils.Logging$class.warn(83) | Error > while fetching metadata [{TopicMetadata for topic protobuffer -> > No partition metadata for topic protobuffer due to > kafka.common.LeaderNotAvailableException}] for topic [protobuffer]: class > kafka.common.LeaderNotAvailableException > [FileSystemMoniter] ERROR [main] kafka.utils.Logging$class.error(97) | Failed > to send requests for topics protobuffer with correlation ids in [0,8] > Exception in thread "main" kafka.common.FailedToSendMessageException: Failed > to send messages after 3 tries. > at > kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90) > at kafka.producer.Producer.send(Producer.scala:76) > at kafka.javaapi.producer.Producer.send(Producer.scala:33) > at java_example.ProducerExamples.main(ProducerExamples.java:26) -- This message was sent by Atlassian JIRA (v6.3.4#6332)