1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
|
Release: RabbitMQ 2.8.0
Release Highlights
==================
server
------
bug fixes
- reduce idle CPU usage when there are lots of mirrored queues
- fix a rare bug which could cause the server to stop accepting connections
- ensure starting a ram node when all disk nodes are down fails, instead
of creating a blank ram node
- fix a race in mirrored queues where one node could run two mirrors
- improve internal accounting of file descriptors; make it harder to hit the
limit unexpectedly
- rabbitmqctl <unknown-action> fixed on R15B
- fix race condition leading to monitoring other cluster nodes twice
- leave the Erlang distributed system, not just Mnesia, when resetting
- more consistent handling of RABBITMQ_* environment variables
enhancements
- dead lettering - queues can specify an exchange to which messages should be
redirected when they are rejected or expire
- internal flow control to limit memory use and make performance more
predictable if the server is overloaded
- fsync after Mnesia transactions to ensure recently-created queues, exchanges
are not lost in the event of an unexpected shutdown
- much more eager fsync when persistent messages are published without
confirms / transactions leading to far fewer messages lost in the event
of an unexpected shutdown
- server no longer fails to start when a durable exchange is declared using
an exchange type plugin which is subsequently disabled. Instead the exchange
exists but routes no messages
- better OpenBSD support (thanks to Piotr Sikora)
- basic.reject and basic.nack now respect transactions
- rabbitmq-echopid.bat introduced: allows obtaining the server PID on Windows
- the start of logging configuration: initially just for per-connection logging
- set SO_LINGER to 0 to prevent file descriptors being used by closed
connections
- improve error reporting when AMQP ports are already used by non-RabbitMQ
brokers
- improve error reporting when Mnesia times out waiting for tables
- consistent naming of connections and channels across rabbitmqctl and the
management plugin
- file descriptor statistics added to "rabbitmqctl status"
- more robustness if rabbitmq-plugins cannot parse the enabled plugins file
- don't start external cpu_sup process; we don't need it
performance improvements
- consuming has smarter flow control, leading to performance improvements in
many cases
- deleting queues with many bindings to topic exchanges is no longer
O(binding_count^2)
- message ID generation is somewhat faster
packaging
---------
bug fixes
- debian: add build dependency on erlang-nox
- debian / rpm: don't start the server with "su", fixing inability to
shut down seen on Ubuntu
- macports: fix plugins showing version as "0.0.0"
- macports: create configuration directory if it does not already exist
- windows: INSTALL file now contain Windows-style line endings
enhancements
- generic unix tarball: by default locate all log / db / conf files within
the unpacked tarball, simplifying installation
erlang client
-------------
bug fixes
- fix "make documentation"
enhancements
- wait_for_confirms() can now take a timeout
java client
-----------
bug fixes
- fix memory leak when channels were closed on a connection that stays open
- fix display of message headers and content in the tracer
- fix hang in ConnectionFactory when the first frame from the server is never
received
- fix NullPointerException at ConsumerDispatcher.java:91
enhancements
- waitForConfirms() can now take a timeout
- allow use of Java arrays in AMQP arrays (e.g. for arguments and headers)
- don't depend on org.apache.commons classes except for tests
- fire channel shutdown listeners on connection shutdown
- show fractional message rates in MulticastMain
- show aggregated producer rates in MulticastMain
.net client
-----------
bug fixes
- don't try to close the socket more than once if a heartbeat is missed
enhancements
- WaitForConfirms() can now take a timeout
management plugin
-----------------
bug fixes
- fix overview page in MSIE
- escape HTML entities properly in the web UI
- fix incorrect display of mirrored queues as unsynchronised after database
failover
- give sensible error if user tags field is missing
- fix [Admin] etc links which were broken in some browsers
- fix wrong date in "last updated" in the web UI
enhancements
- add separate form to update users
- add option to import file of entity definitions at startup
- publish messages from the queue details page of the web UI
- make "exchange type" into a select box in the web UI
- show the connection heartbeat more clearly in the web UI
json-rpc plugin
---------------
bug fixes
- fix memory leak in ETS
rabbitmqadmin
-------------
bug fixes
- fix "rabbitmqadmin get"
- display array info-items correctly
- allow specifying node for queue declaration
enhancements
- configuration file for connections (thanks to Massimo Paladin)
federation plugin
-----------------
enhancements
- allow the queue declared upstream to be mirrored
STOMP plugin
------------
bug fixes
- fix invalid MESSAGE Frames for reply-to temporary queues
- fix non-UTF-8 durable topic subscription queue names
- behave sensibly on death of the internal AMQP connection / channel
- prevent an infinite loop when implicit connect enabled with an invalid
username / password
- allow more than one SSL handshake to happen at once
enhancements
- support client login via SSL certificate, similar to
rabbitmq_auth_mechanism_ssl for AMQP
- performance improvement: don't declare a queue on every publish
- support the server's new flow control mechanism
- add "server" field to the "CONNECTED" frame
auth backend LDAP plugin
------------------------
enhancements
- optionally look up a user's DN after binding - useful for Microsoft
Active Directory
- remove build time dependency on nmap
- allow queries to run as the user we bound as
auth mechanism SSL plugin
-------------------------
bug fixes
- don't blow up if a certificate contains more than one Common Name
enhancements
- support obtaining the user name from the certificate's Distinguished Name
Upgrading
=========
To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install
the new version. All configuration and persistent message data is retained.
To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new
version on all the nodes and follow the instructions at
https://www.rabbitmq.com/clustering.html#upgrading .
To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be
retained), and then to the current version as described above.
When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be
moved to a backup location and a fresh, empty database will be created. A
warning is recorded in the logs. If your RabbitMQ installation contains
important data then we recommend you contact support at rabbitmq.com for
assistance with the upgrade.
|