rabbitmq / rabbitmq-java-client

RabbitMQ Java client
https://www.rabbitmq.com/java-client.html
Other
1.24k stars 573 forks source link

Make ConnectionFactory easier to use #608

Open acogoluegnes opened 5 years ago

acogoluegnes commented 5 years ago

Related to #330.

Many settings have been added to ConnectionFactory over the years, making it somewhat harder to configure. It's for instance easy to omit an important option when setting TLS, because the different TLS-related options are scattered: ConnectionFactory#useSslProtocol, ConnectionFactory#setSslContextFactory, ConnectionFactory#enableHostnameVerification. Same thing for NIO (mitigated by NioParams).

A more "use-case oriented", less JavaBeans-like way could improve the situation, e.g.:

cf.nio().executor(myNioExecutor).socketChannelConfigurator(configurator) // NIO configuration
  .connectionFactory() // going back to the connection factory (call may be avoided with syntax trick)
  .tls().context(sslContext).hostnameVerification(true); // TLS configuration

Not longer useful configuration methods would be deprecated and scheduled for removal in 7.0.0.

mudit-saxena commented 4 years ago

Hey,

I would like to contribute to this project. I was wondering if this issue is still actionable and can I take this up

michaelklishin commented 4 years ago

@mudit-saxena you can take this up. We only have a single example but if you can run with it, feel free to submit a PR and we will discuss what you think such "fluent API" might look like. Thank you!

acogoluegnes commented 1 year ago

This does not have to go into 6.0, as it could be introduced as a backward-compatible change. We could get rid of deprecated ("direct") configuration methods in 6.0 then.