Skip to content

Releases: rabbitmq/rabbitmq-java-client

4.1.1.RC2

30 May 13:18
fc6e2e6
Compare
Choose a tag to compare
4.1.1.RC2 Pre-release
Pre-release

Changes between 4.1.0 and 4.1.1.RC2

This is a release candidate for 4.1.1, a maintenance release that includes bug fixes and a small improvement in the RpcServer class. This release is backward-compatible with 4.1.0.

Handle TimeoutException on connection creation

When several addresses are provided to the ConnectionFactory and when an address throws a TimeoutException on connection creation, the client wouldn't try the next addresses and throw an exception. Now the client tries to connect to the next address even on a TimeoutException.

GitHub issue: #262

Let reply properties be updated in RpcServer subclasses

The properties of a response message can now be updated with the preprocessReplyProperties and postprocessReplyProperties methods that are called around the handleCall method.

GitHub issue: #271

Remove e2e bindings for auto-delete exchanges

It was possible to have abandoned e2e bindings in the recordedBindings. This caused a channel error during recovery and caused remaining recovery items to fail as well.

Thanks to vikinghawk for this contribution.

GitHub PR: #281

basicCancel and basicConsume honor RPC timeout

The 2 methods basicCancel and basicConsume now use the channel RPC timeout (they used to not use any timeout at all).

Thanks to vikinghawk for this contribution.

GitHub PR: #278

v4.1.1.RC1

17 May 13:18
a771426
Compare
Choose a tag to compare
v4.1.1.RC1 Pre-release
Pre-release

Changes between 4.1.0 and 4.1.1.RC1

This is a release candidate for 4.1.1, a maintenance release that includes a bug fix on connection creation and a small improvement in the RpcServer class. This release is backward-compatible with 4.1.0.

Handle TimeoutException on connection creation

When several addresses are provided to the ConnectionFactory and when an address throws a TimeoutException on connection creation, the client wouldn't try the next addresses and throw an exception. Now the client tries to connect to the next address even on a TimeoutException.

GitHub issue: #262

Let reply properties be updated in RpcServer subclasses

The properties of a response message can now be updated with the preprocessReplyProperties and postprocessReplyProperties methods that are called around the handleCall method.

GitHub issue: #271

4.0.3.RC1

17 May 13:17
5e26b3a
Compare
Choose a tag to compare
4.0.3.RC1 Pre-release
Pre-release

Changes between 4.0.2 and 4.0.3.RC1

This is a release candidate for 4.0.3, a maintenance release that includes a bug fix on connection creation. This release is backward-compatible with 4.0.2.

Handle TimeoutException on connection creation

When several addresses are provided to the ConnectionFactory and when an address throws a TimeoutException on connection creation, the client wouldn't try the next addresses and throw an exception. Now the client tries to connect to the next address even on a TimeoutException.

GitHub issue: #262

4.1.0

20 Feb 09:07
be274a2
Compare
Choose a tag to compare

Changes between 4.0.2 and 4.1.0

This is a maintenance release with a few improvements, focused mainly on usability. It's backward compatible with 4.0.x.

Make continuation timeouts configurable

It is now possible to set a timeout for synchronous AMQP calls (e.g. queueDeclare). The default timeout is 10 minutes (there was no timeout at all before that).

GitHub issue: #219

Emit a warning in NullTrustManager

NullTrustManager trusts every server certificate, it is not considered safe to use it in production. A message now warns against its usage and suggests some solutions.

GitHub issue: #230

Deprecate NullTrustManager

NullTrustManager is deprecated in favor of a implementation with a more explicit name: TrustEverythingTrustManager. This new implementation has the same behavior as NullTrustManager (including the warning mesage introduced in this release).

GitHub issue: #234

Create abstract class for metrics collection

Metrics collector implementations can now subclass AbstractMetricsCollector, which contains the tricky metrics collection logic. This makes the metrics collection easier to extend with new metrics library (e.g. Dropwizard Metrics in the Java client or Spring Boot Metrics).

GitHub issue: #222

4.1.0.RC1

14 Feb 07:04
ea1c521
Compare
Choose a tag to compare
4.1.0.RC1 Pre-release
Pre-release

Changes between 4.0.2 and 4.1.0.RC1

This is a pre-release with a few improvements, focused mainly on usability. It's backward compatible with 4.0.x.

Make continuation timeouts configurable

It is now possible to set a timeout for synchronous AMQP calls (e.g. queueDeclare). The default timeout is 10 minutes (there was no timeout at all before that).

GitHub issue: #219

Emit a warning in NullTrustManager

NullTrustManager trusts every server certificate, it is not considered safe to use it in production. A message now warns against its usage and suggests some solutions.

GitHub issue: #230

Deprecate NullTrustManager

NullTrustManager is deprecated in favor of a implementation with a more explicit name: TrustEverythingTrustManager. This new implementation has the same behavior as NullTrustManager (including the warning mesage introduced in this release).

GitHub issue: #234

Create abstract class for metrics collection

Metrics collector implementations can now subclass AbstractMetricsCollector, which contains the tricky metrics collection logic. This makes the metrics collection easier to extend with new metrics library (e.g. Dropwizard Metrics in the Java client or Spring Boot Metrics).

GitHub issue: #222

v4.0.2

20 Jan 14:25
5296842
Compare
Choose a tag to compare

Changes between 4.0.1 and 4.0.2

This is a maintenance release that includes a bug fix in the NIO connector. This release is backward-compatible with 4.0.1.

NIO main thread can terminate due to an unhandled AssertionError

An AssertionError can be thrown in some edge cases and terminates the NIO main thread. This type of exception is now properly handled. AssertionError is actually not justified in this case, but this behavior is kept for compatibility reasons. More appropriate exceptions will be used in 5.0.0 (see #239).

GitHub issue: #237

4.0.2.RC1

17 Jan 15:58
c75c595
Compare
Choose a tag to compare
4.0.2.RC1 Pre-release
Pre-release

Changes between 4.0.1 and 4.0.2.RC1

This is a release candidate for 4.0.2, a maintenance release that includes a bug fix in the NIO connector. This release is backward-compatible with 4.0.1.

NIO main thread can terminate due to an unhandled AssertionError

An AssertionError can be thrown in some edge cases and terminates the NIO main thread. This type of exception is now properly handled. AssertionError is actually not justified in this case, but this behavior is kept for compatibility reasons. More appropriate exceptions will be used in 5.0.0 (see #239).

GitHub issue: #237

4.0.1

04 Jan 08:33
acff50c
Compare
Choose a tag to compare

Changes between 4.0.0 and 4.0.1

This is a maintenance release that includes a few improvements. All users of 4.0.0 are encouraged to upgrade to this version.

This release is available from Maven Central.

Always use monotonically growing clock function in BlockingCell

BlockingCell now always uses System.nanoTime() to evaluate duration in timeout methods. This avoids errors when system clock changes.

Thanks to dhakimTRX for this contribution.

GitHub PR: #224

Add toString() to AutorecoveringChannel

Thanks to Gary Russel for this contribution.

GitHub issue: #217

Comply to Android StrictMode

This was actually fixed in 3.6.7 but is worth mentioning here. A non-correctly closed InputStream was causing failure when running on Android with StrictMode enabled.

Thanks to Tobias Knell for this contribution.

GitHub PR: #232

v4.0.0

23 Nov 17:27
c60388b
Compare
Choose a tag to compare

Changes between 3.6.x and 4.0.0

RabbitMQ Java Client 4.0.0 doesn't bring any breaking changes to application APIs (e.g. Consumer), the major version upgrade rather marks the decoupling of the Java Client project from the RabbitMQ broker, at least for release cycle and versioning.

This decoupling will make it easier and faster to ship bug fixes and new features. This is also the occasion to adopt semantic versioning.

A few new methods have been added to the Connection, Channel, and RecoveryListener interfaces. These interfaces are more likely to be implemented in libraries (e.g. wrappers of the client) than in applications, but in any case, ensure you add those new methods to your implementation classes.

This release is available from Maven Central.

Enable automatic connection recovery by default

Automatic connection recovery has been there for a few years now, and we know that many users always enable it, so we've decided to enable it by default. You can still choose not to use it, but you'll need to disable it explicitly.

GitHub issue: #214

Logging library integration

SLF4J is now used in several places of the Java Client to report logging messages. It's also used in the default exception handler implementation that ships with the client. This gives the application developer a large choice of logging implementations (e.g. Logback, Log4j) and a large choice of destinations to direct logs to (file, but also logging-specific protocols).

GitHub issue: #114

Add support for metrics

The Java Client can now gather runtime metrics such as number of sent and received messages. The metrics are collected by default through Dropwizard Metrics library, but collection is pluggable if you have some fancy requirements. Using Dropwizard Metrics gives the opportunity to use many monitoring backends out-of-the-box: JMX, Spring Boot metrics endpoint, Ganglia, Graphite, etc.

GitHub issue: #79

Support NIO

The Java Client has been historically using the traditional Java blocking IO library (i.e. Socket and its Input/OutputStreams). This has been working for years, but isn't adapted to all kinds of workloads. Java NIO allows for a more flexible, yet more complex to implement model to handle network communication. Long story short, Java NIO allows to handle more connections with fewer threads (the blocking IO mode always needs one thread per connection). Java NIO is an opt-in and is disabled by default.

This feature is still considered experimental: even though our test suite passes in NIO mode, we haven't got feedback yet from production projects.

GitHub issue: #11

Support dynamic versioning

Now the Java Client isn't tied to RabbitMQ server releases, supporting dynamic versioning is possible. This will make easier for users to know if they can safely upgrade to a new version of the client, if they can benefit from new features, etc.

GitHub issue: #123

Extract Tracer into a separate project

The AMQP Tracer is now hosted in a separate project. See the documentation for more details.

GitHub issue: #204

Extract PerfTest into a separate project

The PerfTest tool is now hosted in a separate project. See the documentation for more details.

GitHub issue: #196

Prevent Socket.write() from blocking

When the connection was lost between the client and the server, the Java Client could block on write operations until the underlying socket was closed by the operating system (after several minutes on Linux). This has been solved by making part of the shutdown sequence asynchronous.

GitHub issue: #194

UnknownChannelException in AMQConnection.MainLoop.run

Corner cases (e.g. channel closed - thus no longer known from the client - with an in-flight delivery) could trigger fatal exceptions. Those cases are now handled and just logged.

GitHub issue: #189

Add Recoverable[Connection/Channel] interfaces

This makes casting and using a recoverable connection/channel a bit easier than casting to either just Recoverable (which just exposes the two methods) or the concrete class.

GitHub issue: #137

Make socket connection to try all DNS record IPs

GitHub issue: #138

Finish transition to Maven

The build doesn't depend on Ant anymore.

GitHub issues: #164, #37

Bump default TLS protocol version to TLS v1.2

TLS v1.2 is used by default only if the client JVM supports it, otherwise the client automatically falls back to TLS v1.0.

GitHub issue: #139

Begin recovery after all shutdown listeners have been given a chance to run

GitHub issue: #135

Enhance RpcClient: Provide access to message metadata

GitHub issue: #134

Contributed by Zac Farrell.

Make Connection implement Closeable interface

GitHub issue: #131

Contributed by Karl "Khazrak" Andersson.

Detailed list of changes.

RabbitMQ 3.4.3

22 Aug 22:40
Compare
Choose a tag to compare