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.
|