spring-cloud / spring-cloud-stream-binder-kafka

Spring Cloud Stream binders for Apache Kafka and Kafka Streams
Apache License 2.0
331 stars 301 forks source link

Support for new Producer/Consumer without Zookeeper connection #37

Closed barrycommins closed 8 years ago

barrycommins commented 8 years ago

Hi,

is there any plan to support using the new Consumer / new Producer configuration without having to specify the connection to Zookeeper? http://kafka.apache.org/documentation.html#producerconfigs

It looks like it will default to localhost in KafkaBinderConfigurationProperties, and is an expected setting.

In some Kafka configurations, particularly when using ACLs, the connection to Zookeeper will be firewalled and the producer/consumer will only be allowed to connect to Kafka. This is often the case when management of topics is restricted.

nitantbhartia commented 8 years ago

@barrycommins did you find a way around this? I am seeing the same issue and was wondering if you found a workaround

nitantbhartia commented 8 years ago

@mbogoevici can we get some love here? Is there any way currently to bypass using zookeeper?

barrycommins commented 8 years ago

@nitantbhartia Hi, I've only gotten back to looking at this today, and it looks like there's a very simple solution.

just set spring.cloud.stream.kafka.binder.auto-create-topics=false and the binder will never attempt to connect to Zookeeper. It still sets the default to localhost, but it isn't used.

I've tried this on 1.1.0.RELEASE

mbogoevici commented 8 years ago

@barrycommins Thanks for checking and responding! I suppose we can close this issue now?

barrycommins commented 8 years ago

@mbogoevici Sure, I'll close it now, thanks.

barrycommins commented 8 years ago

One thing that might be worth noting though is that even if spring.cloud.stream.kafka.binder.auto-create-topics is set to false, the KafkaProducer / KafkaConsumer will still autocreate the topic on the initial connection, using the default properties on the Kafka broker.

This is default behaviour in Kafka unless auto.create.topics.enable is set to false in server.properties. It will just be done by Kafka code instead of explicitly by the Spring Cloud Stream Kafka binder

mbogoevici commented 8 years ago

Yes - this is documented in the setting description (see http://docs.spring.io/spring-cloud-stream/docs/Brooklyn.BUILD-SNAPSHOT/reference/htmlsingle/#_configuration_options_2) . That is the behaviour of the Kafka broker and there's nothing that can be do on our side to control it - so the only thing we can do is to document it.

barrycommins commented 8 years ago

Oops, RTFM I guess :-) Sorry about that.

mbogoevici commented 8 years ago

No worries! Thanks for staying in touch! Looking forward to more :)!

jensdt commented 7 years ago

Just a heads up if you, like me, came upon this issue and still have problems... @barrycommins made a small typo in the property - 'kakfa.binder' should of course be 'kafka.binder'.

Serves me right for blindly copy-pasting but hopefully this saves somebody else the 15 minutes I spent wondering why this didn't work.

barrycommins commented 7 years ago

@jensdt Sorry about that, I'd say I'd type 'kakfa' instead of 'kafka' about 50% of the time!

I've updated the original comment now to correct it.

daggerok commented 6 years ago

Thanks for spring.cloud.stream.kafka.binder.auto-create-topics=false good to know!

garyrussell commented 6 years ago

Just to close this out; the upcoming 2.0 release has no dependencies on zookeeper at all. Even though the bindings have used the pure java client for a long time now, we still needed to go via Zookeeper to provision topics.

There is now a pure Java AdminClient (it was added in 0.11 but was not fully functional - for the binder's needs - until 1.0.0).

vbasem commented 6 years ago

@garyrussell is this part of any of the current milestones? As of M5 I am still seeing zookeeper connections being opened.

garyrussell commented 6 years ago

There is no M5; what do you mean?

2.0.0.M4 was released last week and no longer has zookeeper dependencies.

This commit: https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/commit/50b8955dfc6330c150195d84a9c64c1ba95b0bef

As you can see from the tag it is in M4

screen shot 2018-02-11 at 11 12 56 am
vbasem commented 6 years ago

Sorry I was not being accurate, M5 was referring to Spring Cloud Finchley.M5 release train. Do you think M4 will be part of the next release train?

garyrussell commented 6 years ago

See the project page.

Finchley.M5 includes Elmhurst.M3; you need to override the stream dependencies to Elmhurst.M4.

Presumably it will be in the next Finchley milestone.