File: 3.6.0.md

package info (click to toggle)
rabbitmq-server 4.0.5-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 37,948 kB
  • sloc: erlang: 257,835; javascript: 22,466; sh: 2,796; makefile: 2,517; python: 1,966; xml: 646; cs: 335; java: 244; ruby: 212; php: 100; perl: 63; awk: 13
file content (462 lines) | stat: -rw-r--r-- 17,180 bytes parent folder | download | duplicates (4)
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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
## Release Highlights

This is the release notes for RabbitMQ 3.6.0 RC3. This is a preview of
a feature release.

Key improvements in this release are:

 * Lazy queues
 * Much better queue synchronisation throughput
 * Lower RAM use, tunable flow control
 * Stronger password encryption with pluggable algorithms
 * Development moved to GitHub; build system now uses erlang.mk
 * Significant improvements to Web STOMP
 * Experimental WinRT-compatible .NET client, SQL CLR compatibility in the "regular" one
 * Pagination in management UI


### Server

#### Bug Fixes

 * Cluster-wide alarm state is not updated when alarmed node goes down.

   Contributed by Alexey Lebedeff (@binarin).

   GitHub issue: [rabbitmq-server#362](https://github.com/rabbitmq/rabbitmq-server/issues/362)

 * Blocked connections could be unblocked too early.

   When multiple resource alarms were in effect, clearing just one of them would
   unblock all publishers prematurely.

   Contributed by Alexey Lebedeff (@binarin).

   GitHub issue: [rabbitmq-server#379](https://github.com/rabbitmq/rabbitmq-server/issues/379)

 * Blocked connections that are closed by clients are now expired
   and cleaned up by the heartbeat mechanism.

   Contributed by Alexey Lebedeff (@binarin).

   GitHub issue: [rabbitmq-server#384](https://github.com/rabbitmq/rabbitmq-server/issues/384)

 * If `RABBITMQ_MNESIA_DIR` was set to a value with a trailing slash, it could prevent
   automatic clustering (and other operations that assume pristine node state) from starting.

   GitHub issue: [rabbitmq-server#118](https://github.com/rabbitmq/rabbitmq-server/issues/118)

 * Standard output and error redirection in package scripts not respects `RABBITMQ_LOG_BASE`.

   GitHub issue: [rabbitmq-server#88](https://github.com/rabbitmq/rabbitmq-server/issues/88)

 * Properly seed pseudo-random number generator when picking client port

   Contributed by Alexey Lebedeff (@binarin).

   GitHub issue: [rabbitmq-common#3](https://github.com/rabbitmq/rabbitmq-common/issues/3)

 * `RABBITMQ_ALLOW_INPUT` was ignored on Windows

   GitHub issue: [rabbitmq-server#490](https://github.com/rabbitmq/rabbitmq-server/issues/490)


#### Enhancements

 * Lazy queues.

   Lazy queues is a new feature that can significantly reduce RAM use of queues
   that can grow very long (e.g. don't have consumers online for hours or day).
   Such queues page messages to disk as they enter the queue.

   This feature is opt-in and has virtually no overhead for consumers in most cases,
   making throughput for publishers much more even and reducing RAM use.

   GitHub issue: [rabbitmq-server#351](https://github.com/rabbitmq/rabbitmq-server/issues/351)

 * Queue synchronisation to mirrors now happens in batches of configurable size,
   4096 messages by default. This can improve sync throughput by an order of magnitude.

   GitHub issue: [rabbitmq-server#336](https://github.com/rabbitmq/rabbitmq-server/issues/336)

 * queue leader-to-node distribution is now more flexible: there are several
   strategies to choose from.

   GitHub issue: [rabbitmq-server#121](https://github.com/rabbitmq/rabbitmq-server/issues/121)

 * Stronger password encryption algorithm.

   SHA-256 is the hashing function used by default now, with SHA-512 being an option provided
   out of the box. Support for more options (Scrypt, bcrypt, etc) can be added with plugins.

   Existing user records will continue using MD5. To force re-hashing/encryption, change
   user password using `rabbitmqctl` or management UI/HTTP API.

   This should improve FIPS-180 compatibility.

   GitHub issue: [rabbitmq-server#270](https://github.com/rabbitmq/rabbitmq-server/issues/270)

 * Lower RAM use thanks to disabled in-process caching.

   RabbitMQ's in-process read buffers are now disabled by default. This often significantly
   reduces RAM usage at effectively no throughput or latency cost because the OS and file
   system do the same job fairly well.

   GitHub issue: [rabbitmq-server#228](https://github.com/rabbitmq/rabbitmq-server/issues/228)

 * [Configurable flow control settings](https://blog.rabbitmq.com/posts/2015/10/new-credit-flow-settings-on-rabbitmq-3-5-5/)

   Note that larger values will not necessarily lead to higher throughput or lower latency.
   They can also result in larger RAM use and therefore can be dangerous.

   GitHub issue: [rabbitmq-server#143](https://github.com/rabbitmq/rabbitmq-server/issues/143)

 * Build system switched to erlang.mk.

   [erlang.mk](https://github.com/ninenines/erlang.mk) is a modern build system for Erlang
   projects. RabbitMQ and all of its sub-projects have been switched to it.

   This yields several benefits for RabbitMQ maintainers and plugin developers,
   for example, dependency management for plugins is much more straightforward, build
   times are significantly improved, there is no need to depend on `rabbitmq-server` for most
   plugins.

   Various 3rd party plugins need to migrate to erlang.mk in order to be built against
   RabbitMQ 3.6.0 (`rabbit_common`).

   GitHub issue: [rabbitmq-server#388](https://github.com/rabbitmq/rabbitmq-server/issues/388)

 * Streaming `rabbitmqctl`: `rabbitmqctl` list operations now stream results
   instead of waiting for the entire result set to arrive. This both improves
   responsiveness and makes it possible to list individual items, including those
   which did not respond in time.

   GitHub issue: [rabbitmq-server#62](https://github.com/rabbitmq/rabbitmq-server/issues/62)

 * (More) standard exit codes for command line tools

   `rabbitmqctl` and `rabbitmq-plugins` now use more standard, or at least distinctive,
   error codes for various failures.

   Contributed by Alexey Lebedeff (@binarin).

   GitHub issue: [rabbitmq-server#396](https://github.com/rabbitmq/rabbitmq-server/issues/396)

 * Improved log message for channel exceptions.

   GitHub issues: [rabbitmq-server#416](https://github.com/rabbitmq/rabbitmq-server/issues/416)

 * Improved log message when a client's TCP connection is closed unexpectedly.

   GitHub issue: [rabbitmq-server#60](https://github.com/rabbitmq/rabbitmq-server/issues/60)

 * Improved log message when a client connects to a non-existent vhost

   GitHub issue: [rabbitmq-server#320](https://github.com/rabbitmq/rabbitmq-server/issues/320)

 * Improved log message for `access_refused` connection errors.

   GitHub issue: [rabbitmq-server#418](https://github.com/rabbitmq/rabbitmq-server/issues/418)

 * Improved log message for `command_invalid` connection errors.

   GitHub issue: [rabbitmq-server#419](https://github.com/rabbitmq/rabbitmq-server/issues/419)

 * More sensible error code when a client connects to a non-existent vhost (or vhost it has
   no permissions for). The code returned is now `530`.

   GitHub issue: [rabbitmq-server#237](https://github.com/rabbitmq/rabbitmq-server/issues/237)

 * Memory monitoring interval is now configurable.

   GitHub issue: [rabbitmq-server#112](https://github.com/rabbitmq/rabbitmq-server/issues/112)

 * Prevent background GC interval from becoming too large due to backoff.

   Contributed by Dallas Marlow (@dallasmarlow).

   GitHub issue: [rabbitmq-server#100](https://github.com/rabbitmq/rabbitmq-server/issues/100)

 * Windows installer now supports "unattended" NSIS installs.

   Contributed by Ryan Zink (@ryanzink).

   GitHub issue: [rabbitmq-server#264](https://github.com/rabbitmq/rabbitmq-server/issues/264)

 * Windows package name now includes RabbitMQ version it provides.

   GitHub issue: [rabbitmq-server#80](https://github.com/rabbitmq/rabbitmq-server/issues/80)

 * `kernel.net_ticktime` is now included into `rabbitmqctl status` output.

   GitHub issue: [rabbitmq-server#63](https://github.com/rabbitmq/rabbitmq-server/issues/63)

 * `rabbitmqctl` now has a command for setting up free disk space limit at runtime.

   GitHub issue: [rabbitmq-server#461](https://github.com/rabbitmq/rabbitmq-server/issues/461)

 * Backup directory location is now mentioned in failed upgrade messages.

   GitHub issue: [rabbitmq-server#169](https://github.com/rabbitmq/rabbitmq-server/issues/169)

 * `rabbit_diagnostics:maybe_stuck/0` now includes date and time in its output.

   GitHub issue: [rabbitmq-server#506](https://github.com/rabbitmq/rabbitmq-server/issues/506)

#### Other

 * Erlang R16B03 is now required.

   17.5 or 18.x are recommended.

   GitHub issue: [rabbitmq-server#250](https://github.com/rabbitmq/rabbitmq-server/issues/250)

 * Use/support new Erlang/OTP 18 date and time API.

   Only when it is available, of course.

   GitHub issue: [rabbitmq-server#233](https://github.com/rabbitmq/rabbitmq-server/issues/233)

 * RabbitMQ server now supports tracing of credit flow events (e.g. when a process is blocked
   by credit flow). This is currently a compile-time flag aimed to be used in development
   environments.

   GitHub issue: [rabbitmq-server#137](https://github.com/rabbitmq/rabbitmq-server/issues/137)


### Java Client

#### Enhancements

 * Shutdown threads can use an executor.

   In environments with very constrainted per-process thread reasources, e.g. basic PaaS plans,
   temporary threads created during connection shutdown may make the app run over the limit.

   It is now possible to use a user-provided executor for shutdown operations instead.

   GitHub issue: [rabbitmq-java-client#87](https://github.com/rabbitmq/rabbitmq-java-client/issues/87)

 * ChannelManager now can use an executor.

   Similar to the above but for `ChannelManager` operations.

   GitHub issue: [rabbitmq-java-client#94](https://github.com/rabbitmq/rabbitmq-java-client/issues/94)

 * `Channel#consumerCount(string)` is a new convenience method for retrieving number of consumers on a queue.

   GitHub issue: [rabbitmq-java-client#49](https://github.com/rabbitmq/rabbitmq-java-client/issues/49)

 * `Channel#messageCount(string)` is a new convenience method for retrieving number of messages in a queue.

   GitHub issue: [rabbitmq-java-client#41](https://github.com/rabbitmq/rabbitmq-java-client/issues/41)

 * `LongString#toString` is part of the API

   GitHub issue: [rabbitmq-java-client#84](https://github.com/rabbitmq/rabbitmq-java-client/issues/84)


### .NET Client

#### Enhancements

 * Host/address list support is back. Host selection strategy (when recovering a connection) is now pluggable.

   GitHub issue: [rabbitmq-dotnet-client#81](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/81)

 * Experimental .NET client with Windows RT support is now available.

   GitHub issue: [rabbitmq-dotnet-client#16](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/16)

 * SQL CLR compatibility.

   GitHub issue: [rabbitmq-dotnet-client#57](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/57)

 * `IModel#ConsumerCount(string)` is a new convenience method for retrieving number of consumers on a queue.

   GitHub issue: [rabbitmq-dotnet-client#73](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/73)

 * `IModel#MessageCount(string)` is a new convenience method for retrieving number of messages in a queue.

   GitHub issue: [rabbitmq-dotnet-client#74](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/74)

 * Continuation timeout is now configurable.

   GitHub issue: [rabbitmq-dotnet-client#80](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/80)

 * `RabbitMQ.Client.Headers` is a new class that contains constants for commonly used headers.

   Contributed by Yury Pliner (@Pliner).

   GitHub issue: [](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/52)

#### Other

 * .NET 4.5 is now required by the library.

   GitHub issue: [rabbitmq-dotnet-client#134](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/134)

 * Code examples are removed from the .NET client repository. All examples belong
   to `rabbitmq-tutorials` now.

   GitHub issue: [rabbitmq-dotnet-client#39](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/39)



### Management plugin

#### Enhancements

 * Pagination for connections, channels, exchanges, and queues.

   Management UI now supports pagination, making the UI much more responsive
   in environments with many connections, queues, etc.

   GitHub issue: [rabbitmq-management#50](https://github.com/rabbitmq/rabbitmq-management/issues/50)

 * Queue information objects in responses now has a boolean property for queue
   exclusivity instead of a confusing `owner_pid`.

   GitHub issue: [rabbitmq-management#40](https://github.com/rabbitmq/rabbitmq-management/issues/40)

#### Bug Fixes

 * Connection and channel filtering should respect active vhost.

   GitHub issue: [rabbitmq-management#34](https://github.com/rabbitmq/rabbitmq-management/issues/34)

 * GET requests to `/api/queues/{vhost}/{name}/get` now accept/provide `application/json`

   GitHub issue: [rabbitmq-management#46](https://github.com/rabbitmq/rabbitmq-management/issues/46)


### MQTT plugin

#### Enhancements

 * Pluggable retained message stores. Since MQTT 3.1.1 spec doesn't dictate any consistency
   or availability from the store in clustered environments, we only provide an in-memory implementation
   suitable for development environments with a single node. For production environments, plugins that
   provide stores with specific consistency guarantees are expected to be developed.

   GitHub issue: [rabbitmq-mqtt#16](https://github.com/rabbitmq/rabbitmq-mqtt/issues/16)

 * Default subscription (queue) TTL for non-clean sessions is now 24 hours

   GitHub issue: [rabbitmq-mqtt#49](https://github.com/rabbitmq/rabbitmq-mqtt/issues/49)

 * Socket-based authentication plugins now can work with plugins such as MQTT and STOMP
   (those using direct Erlang client).

   Contributed by Petr Gotthard (@gotthardp).

   GitHub issue: [rabbitmq-server#111](https://github.com/rabbitmq/rabbitmq-server/issues/111)


### STOMP plugin

#### Enhancement

 * Control over queue properties.

   It is now possible to control queue properties (durable, auto-delete, exclusive plus several
   supported x-arguments) for all STOMP destinations.

   When using durable topics, it is now necessary to configure queue auto-deletion to `false`
   explicitly via a header.

   GitHub issue: [rabbitmq-stomp#24](https://github.com/rabbitmq/rabbitmq-stomp/issues/24)

 * Socket-based authentication plugins now can work with plugins such as MQTT and STOMP
   (those using direct Erlang client).

   Contributed by Petr Gotthard (@gotthardp).

   GitHub issue: [rabbitmq-server#111](https://github.com/rabbitmq/rabbitmq-server/issues/111)


### Web STOMP plugin

#### Enhancements

 * Raw WebSocket endpoint.

   The plugin now supports a new endpoint, `/ws`, which supports WebSocket connections directly
   without the need to use SockJS.

   GitHub issue: [rabbitmq-web-stomp#17](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/17).

 * Support for binary data streams.

   Thanks to the new direct WebSocket support, binary data now can be transferred over
   Web STOMP connections.

   GitHub issue: [rabbitmq-web-stomp#19](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/19)

 * STOMP heartbeat support.

   GitHub issue: [rabbitmq-web-stomp#15](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/15)

 * Heartbeats are disabled for SockJS.

   GitHub issue: [rabbitmq-web-stomp#28](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/28)

 * CORS headers support

   GitHub issue: [rabbitmq-web-stomp#12](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/12)

 * Cowboy configuration.

   Key settings of Cowboy, the HTTP/WebSocket server powering the plugin, now can be fine tuned
   via this plugin.

   GitHub issue: [rabbitmq-web-stomp#22](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/22)

 * Cowboy is upgraded to `1.0.3`

   GitHub issue: [rabbitmq-web-stomp#13](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/13)

 * SockJS is upgraded to `1.0.3`.

   GitHub issue: [rabbitmq-web-stomp#4](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/4)

 * Queue parameters now can be configured via headers (just like in the regular STOMP plugin).

   GitHub issue: [rabbitmq-web-stomp#7](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/7)

 * Address Web STOMP listener binds to now can be configured.
   Previously only port was configurable.

   GitHub issue: [rabbitmq-web-stomp#2](https://github.com/rabbitmq/rabbitmq-web-stomp/issues/2)


### LDAP plugin

#### Enhancements

 * LDAP server connections are now pooled. This significantly reduces
   the load on LDAP servers.

   Contributed by [LShift](http://www.lshift.net).

   GitHub issue: [rabbitmq-auth-backend-ldap#1](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap/issues/1).



### Sharding plugin

#### Enhancements

 * Routing key policy is now optional.

   GitHub issue: [rabbitmq-sharding#6](https://github.com/rabbitmq/rabbitmq-sharding/issues/6)



### Delayed Message Exchange

#### Enhancement

 * Initial public release.

   GitHub issue: [rabbitmq-delayed-message-exchange#1](https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/1)