This release contains bug fixes and minor usability improvements.
rabbitmq-env.conf.bat Support on Windows
It is now possible to use a separate file for configuring RabbitMQ environment variables on Windows.
Excessive SASL Logging on Windows
SASL logger was needlessly verbose on Windows, even when configured to only log
warn as Alias to
When configuring log levels,
warn can now be used as an alias for
rabbitmqctl purge_queue is a new
rabbitmqctl command which purges a queue and can
be used in situations when
rabbitmqadmin or management UI are not available.
file_handle_cache:clear_read_cache/0 is a new function that clears read cache buffers.
It is meant to be used with
Improved rabbitmqctl Error Messages
rabbitmqctl list_user_permissions is invoked without any arguments, it now outputs
a sensible error message.
Kernel Polling Enabled Unconditionally by Default
Previously it was possible to accidentally disable runtime kernel polling (epoll, kqueue, etc) by
RABBITMQ_SERVER_ERL_ARGS. Now kernel polling is always enabled unless
explicitly disabled using
Easier I/O Thread Pool Size Configuration
Runtime I/O thread pool size is now easier to tweak: just use the
Higher I/O Thread Pool Size Default
Runtime I/O thread pool size is now
64 instead of
30 by default. This reduces time spent waiting for
file I/O operations to complete on machines with 8 or more cores.
Improved Heartbeat Timeout Logging
Heartbeat timeouts are now logged with clearer messages and mention effective
Recoverable Mirror Could Be Reset Due to Race Condition
Recoverable mirror could be reset (considered to be unrecoverable) on start
due to a race condition.
Throughput Regression Fix
x-death headers can now safely be republished by clients
When a client republished an
x-death event injected during dead-lettering, it could lead
to queue process termination.
Test Suite Upgraded to Stomp.py 4.x
Test suite now uses the most recent Stomp.py version.
End Frame With a Newline Character
STOMP frames are now terminated with a newline character.
This is allowed by the STOMP spec and improves compatibility with the PHP STOMP extension.
Queue Name Length Validated Early
Queue names longer than 255 characters (per protocol spec) now result in an
thrown early and with a clear error message.
Forgiving Exception Handler
ExceptionHandler implementation closes the channel after an unhandled consumer exception.
This is not desirable in every case, so a new
ForgivingExceptionHandler was introduced. It works
DefaultExceptionHandler but does not close the channel.
TCP back pressure added to the client in the
3.5.0 cycle had a memory leak that manifested itself
when channel churn was high.
Framing Errors When Publishing During Flow Control
Several clients (including the .NET one) had a subtle socket write failure handling issue that resulted in incorrect
frame interleaving errors when (temporary) flow control kicked in in the server.
Heartbeat Implementation Fixes
Several issues around heartbeats are fixed. They resulted in the client failing to send heartbeat
frames on time and being disconnected on idle connections, in particular when TLS was enabled.
Fixed Memory Leak in Automatically Recovering Connections
Explicit Connection.Close Prevents Automatic Recovery Attempts
Connection.Abort will disable ongoing and future automatic
connection recovery attempts.
Subscription.Close Hangs if Queue is Deleted Underneath It
Subscription.Close() used to hang if the queue it was consuming from was previously