[rabbitmq-discuss] Breaking API changes in JAva API 2.7.0

Steve Powell steve at rabbitmq.com
Thu Nov 10 17:17:45 GMT 2011

Hi Irmo,

On 10 Nov 2011, at 15:16, Irmo Manie wrote:
> Hi guys,
> I was eager to update to the 2.7.0 java client, but when I dropped the
> new jar in I ran into some braking changes (again I must really say
> here).
Nice to see you are eager, and sorry to hear that our changes
broke you. 

> I see that i.e. the connection factory now takes an optional executor
> service as parameter for the channel threads (which is very nice
> actually!).
> With that change, the method for creating a new connection taking an
> array of addresses is now gone and moved into a private method
> together with he executor service parameter:
> private Connection newConnection(ExecutorService executor, Address[] addrs)
> This must be a mistake....
Well; this is something we decided wasn't needed. The Java API was
simplified (to make the classes' interfaces less cluttered).

This particular method is entirely equivalent to a loop in the
connecting client program, and the array of addresses is not used
except in that one place.  We didn't think it was particularly useful,
and it would mean two extra public factory methods.  We intend to
remove uses of the array entirely (even from the private method).

Thanks for spotting it; we are striving for simplicity.

Clearly, as the interface changed you might need to make some small
modifications; for which we apologise; but we hope this isn't a serious one. 
Was it really a breaking change for you?

> Also: why are the connection factory defaults private all of a sudden?
> They are useful if you build an api around the java client and it
> doesn't harm to keep this kind of static info into the public right?
Yes, I see that -- this was zeal again.  We see no real harm in exposing the
STATIC FINAL constants, though, so that will be done in future.
It might save some duplication in the client code.
Again, you can code them explicitly, if you need them, which has the
distinct advantage of you being able to dictate what defaults *you* want.

> These are the things I ran into and switched back again to 2.6.1,
> because I 'need' the connection to multiple addresses to connect to a
> cluster.

Sorry you couldn't continue with 2.7.0; please let us know if there are
insurmountable problems.  I hope I haven't missed anything obvious.

> - Irmo

Steve Powell  (a kitten)
----------some more definitions from the SPD----------
Avoirdupois phr. 'Would you like peas with that?'
Abbey adj. Quite like an Abbe.
Definite phr. 'It's hard of hearing, I think.'
Modest n. The most mod.

More information about the rabbitmq-discuss mailing list