beetle 3.5.1 → 3.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/RELEASE_NOTES.rdoc DELETED
@@ -1,383 +0,0 @@
1
- = Release Notes
2
-
3
- == Version 3.5.1
4
- * remove blank entries from server list strings
5
- * make sure not to subscribe to any server twice
6
-
7
- == Version 3.5.0
8
- * expose publisher method to setup queues/policies ahead of use
9
-
10
- == Version 3.4.3
11
- * optimize declaration of queues with many bindings
12
-
13
- == Version 3.4.2
14
- * Updated amq-protocol gem to version 2.3.2.
15
- * Fixed a rare race condition on message handler timeouts.
16
-
17
- == Version 3.4.1
18
- * Updated amq-protocol gem to version 2.3.1.
19
-
20
- == Version 3.4.0
21
- * Require redis gem version 4.2.1. This version changes the exists to check for the
22
- existence of multiple keys, return the number of keys in the list that exist. This
23
- requires at least redis gem version 4.2.0, but 4.2.1 contains a bug fix for said
24
- command.
25
-
26
- == Version 3.3.12
27
- * Support queue level declaration of dead letter queue message TTL.
28
-
29
- == Version 3.3.11
30
- * Fixed that dead lettering only works correctly with global config option.
31
-
32
- == Version 3.3.10
33
- * Support configuring RabbitMQ write timeout.
34
-
35
- == Version 3.3.9
36
- * Reduce the number of queue policies created on the servers by allowing
37
- the spefication of a default broker policy. You need to install the
38
- default policy with a priority of zero to match all queues ever
39
- created. This feature is optional.
40
-
41
- == Version 3.3.8
42
- * Avoid needless put call when updating queue policies.
43
- It seems the additional call to get the current definition of a policy
44
- is to be preferred over relying on the idempotency of the PUT call.
45
- This helps when adding a new fresh server to a beetle cluster: import
46
- the definitions of one of the existing nodes on the fresh node before
47
- actually adding it to the list of servers in the client's beetle config..
48
-
49
- == Version 3.3.7
50
- * Increased default http api read timeout to handle large server better.
51
-
52
- == Version 3.3.6
53
- * Fixed a redis connection leak in gobeetle.
54
-
55
- == Version 3.3.5
56
- * Support synchronous queue policy creation.
57
-
58
- == Version 3.3.4
59
- * Track publishing policy options metrics.
60
-
61
- == Version 3.3.3
62
- * Broken.
63
-
64
- == Version 3.3.2
65
- * Changed order of queue policy application to avoid ahead of line blocking in dead letter
66
- queues.
67
-
68
- == Version 3.3.1
69
- * It seems that there is a certain preference on connection level when
70
- selecting the next message to process. We try to protect against
71
- such bias by connecting in random order.
72
-
73
- == Version 3.3.0
74
- * protect against duplicate handler execution by keeping the status of
75
- handler exectution for both redundant and non-redundant messages in
76
- the dedup store for a configurable time window. The config option
77
- is named redis_status_key_expiry_interval. Note that this will
78
- significantly increase the cpu load and memory usage of the Redis
79
- server for applications using a large number of non-redundant
80
- messages. This feature is turned off by default, but we will
81
- activate it with the next major release (4.0.0).
82
-
83
- == Version 3.2.0
84
- * added currently processed message to the handler pre-processing step
85
-
86
- == Version 3.1.0
87
- * added more debug log statements
88
- * added new callbacks on class Beetle::Handler:
89
- * pre_process is called before any message processing commences
90
- * post_process is called after all processing has been completed
91
- these handlers can be used for logging purposes (such as logjam
92
- integration)
93
-
94
- == Version 3.0.0
95
-
96
- * provide client method to setup queues and queue policies.
97
- Setting up queue policies on demand in publisher and subscriber is OK
98
- for a small number of queues, publishers and subscribers. But the HTTP
99
- API of RabbitMQ doesn't scale all that well, so that a large number
100
- of HTTP calls to set up queue policies can in fact crash a server.
101
- * allow queue mode specification and dead lettering specification on a
102
- per queue basis.
103
- * change policy setup to be asynchronous, on demand in publisher and
104
- consumer. Users have to run a processors to listen to messages and
105
- call setup_queue_policies! with the parses JSON paylod of the
106
- message.
107
- * store redis gc stats in redis and display them in the configuration
108
- server web UI
109
- * config server: store current master server in consul, if consul
110
- config has been provided.
111
- * config server: server correctly updates configured client ids when
112
- they change in consul.
113
- * don't create dead letter queues when using the trace functionality
114
- * make sure to clean dedup store when ack_count is larger than 2
115
- * added dump_expiries command to beetle to dump dediplication store
116
- expiry times.
117
- * added delete_queue_keys command to beetle to allow deletion of
118
- excess dedup store entries for a given queue.
119
-
120
- == Version 2.3.2
121
- * config server: fixed a race condition when accessing server state.
122
- HTTP requests run in threads separate from the server dispatcher
123
- thread and thus can cause race conditions/crashes when accessing
124
- server state. Solved this by adding a closure evaluator to the
125
- dispatcher.
126
-
127
- == Version 2.3.1
128
- * updated amqp and amq-protocol requirements in ruby client.
129
- * fixed that a change in consul endpoint was not properly handled by
130
- the beetle configuration client.
131
-
132
- == Version 2.3.0
133
- * redis failover: support multiple redis failover instances. This has
134
- required a change in the redis master file format. The master file
135
- content is now either the old format (host:port) for systems using a
136
- single redis failover system or a mapping from system names to
137
- host:port combinations. For example,
138
- "system1/master1:6379\nsystem2/master" specifies to systems with
139
- their corresponding redis masters. Beetle client uses the configured
140
- system name to tind the master it should use.
141
- * support lazy queues: setting :lazy_quques_enabled on the beetle
142
- cofiguration will enable queue_mode: "lazy" for all queues of
143
- declared on the beetle client.
144
- * improved calculation of channel close an connection disconnect
145
- timeouts for beetle publisher to avoid warnings in RabbitMQ logs.
146
- * use SecureRandom.uuid instead of UUID4R::uuid(4) if UUID4R cannot
147
- be loaded.
148
-
149
- == Version 2.2.4
150
- * redis failover: prevent starting a new master switch while one is running
151
-
152
- == Version 2.2.3
153
- * redis failover: server logs errors when redis oparations fail
154
-
155
- == Version 2.2.2
156
-
157
- * Reset redis configuration server state when master becomes available during
158
- pinging or invalidating. Unlike the former ruby implementation, the go code
159
- continues checking redis availability during pinging or invalidating. However,
160
- the code did not reset state properly, leading the UI to display 'switch in
161
- progress' when in fact there wasn't.
162
-
163
- == Version 2.2.1
164
- * Subscriber exits with meaningful error log on possible authentication failures.
165
-
166
- == Version 2.2.0
167
-
168
- * Support specifying a whitelist of retriable exceptions when registering a
169
- message handler. Exceptions which are not on the list will be regarded as
170
- irrecoverable failures.
171
-
172
- == Version 2.1.2
173
-
174
- * Fixed that redis key GC would never complete when a key scheduled
175
- for GC was deleted by a consumer before the collector could retrieve
176
- its expiry date.
177
- * Fixed tha redis key GC would crash on malformed keys.
178
- * Added method to collect keys specified in a file.
179
-
180
-
181
- == Version 2.1.1
182
-
183
- * Support redis failover with less than 100% acknowlegment from failover clients.
184
-
185
- == Version 2.1.0
186
-
187
- * Support exponential backoff when delaying messages using 'max_delay: int' option.
188
-
189
- == Version 2.0.2
190
-
191
- * fixed incorrect computation of responsiveness threshold in
192
- configuration server
193
-
194
- == Version 2.0.1
195
-
196
- * fix for beetle command not geting stuck when connecting to
197
- configuration server
198
- * configuration server displays last seen times in a human readable format
199
-
200
- == Version 2.0.0
201
-
202
- * beetle command has been rewritten in Go
203
- * garbage collecting redis keys now uses the redis SCAN command
204
-
205
- == Version 1.0.4
206
-
207
- * use amqp protocol version 0.9 by default for publishers
208
-
209
- == Version 1.0.3
210
-
211
- * fixed that publisher did not allow specifying message properties
212
-
213
- == Version 1.0.2
214
-
215
- * relax hiredis requirements to >= 0.4.5
216
-
217
- == Version 1.0.1
218
-
219
- * don't try to connect on publisher shutdown
220
-
221
- == Version 1.0.0
222
-
223
- * introduced semantic versioning
224
- * upgraded gems used for devloping beetle
225
- * upgraded amqp gem to version 1.6.0 and amq-protocol to 2.0.1
226
- * relaxed requirements on redis and hiredis versions
227
- * support setting prefetch count for subscriber
228
-
229
- == Version 0.4.12
230
-
231
- * Don't log warnings when publishing redundantly and only
232
- one server has been configured
233
-
234
- == Version 0.4.11
235
-
236
- * Automatically close open publisher sockets at program exit
237
-
238
- == Version 0.4.10
239
-
240
- * Publisher handles nil and symbols as values in headers correctly
241
-
242
- == Version 0.4.9
243
-
244
- * Allow redis_configuration_client to run in the foreground (useful
245
- for docker)
246
-
247
- == Version 0.4.8
248
-
249
- * unseen clients need to be an array
250
-
251
- == Version 0.4.7
252
-
253
- * list clients which have never sent a ping in the failover server UI
254
-
255
- == Version 0.4.6
256
-
257
- * Publish activesupport notifications to support performance measurements
258
-
259
- == Version 0.4.5
260
-
261
- * Starting mutliple redis failover clients is now prohibited by
262
- default. This behavior can be overriden using
263
- "beetle configuration_client start -- --multiple"
264
-
265
- == Version 0.4.4
266
-
267
- * added command to show beetle version: "beetle --version"
268
- * configuration server tracks ids of unknown clients
269
- * configuration clients now sends heartbeats
270
- * configuration server tracks last seen times of clients, based on heartbeat
271
-
272
- == Version 0.4.3
273
-
274
- * fixed a race condition which could lead to duplicate message processing
275
- * fixed eventmachine shutdown sequence problem, which led to ACKs
276
- occasionally being lost due to writing to a closed socket, which in
277
- turn caused messages to be processed twice
278
- * stop_listening now always triggers the subscribe shutdown sequence
279
- via a eventmachine timer callback, if the eventmachine reactor is running
280
-
281
- == Version 0.4.2
282
-
283
- * Fail hard on missing master file
284
- * Set message timestamp header
285
-
286
- == Version 0.4.1
287
-
288
- * Require newer bunny version (0.7.10) to fix publishing of messages larger than frame_max
289
-
290
- == Version 0.4.0
291
-
292
- * Added optional dead lettering feature to mimic RabbitMQ 2.x requeueing behaviour on RabbitMQ 3.x
293
-
294
- == Version 0.3.14
295
-
296
- * switched message id generation to use v4 uuids
297
-
298
- == Version 0.3.0
299
-
300
- * redis master file contents now correctly reflects the state of the running configuration server
301
- * allow accelerating master switch via POST to redis configuration server
302
- * embedded http server into the redis configuration server (port 8080)
303
- * fixed a problem with redis shutdown command
304
- * upgraded to redis 2.2.2
305
- * upgraded to amqp gem version 0.8 line
306
- * use hiredis as the redis backend, which overcomes lack of proper time-outs in the "generic" redis-rb
307
- gem for Ruby 1.9
308
- * use fully qualified hostnames to identify redis configuration clients
309
-
310
- == Version 0.2.9.8
311
-
312
- * since version 2.0, RabbitMQ supports Basic.reject(:requeue => true). we use it now too,
313
- because it enhances performance of message processors. this means of course, you can
314
- only use beetle gem versions >= 0.2.9.8 if your rabbitmq brokers are at least version 2.0.
315
- * publishing timeout defaults to 0 to avoid extreme message loss in some cases
316
-
317
-
318
- == Version 0.2.9.7
319
-
320
- * use new bunny_ext gem and allow specification of global publishing timeouts
321
- * registering a message now automatically registers the corresponding exchange
322
- * don't try to bind queues for an exchange hich has no queue
323
- * ruby 1.9.2 compatibility fixes
324
-
325
- == Version 0.2.9
326
-
327
- * Beetle::Client now raises an exception when it fails to publish a message to at least 1 RabbitMQ server
328
- * Subscribers are now stopped cleanly to avoid 'closed abruptly' messages in the RabbitMQ server log
329
-
330
- == Version 0.2.6
331
-
332
- * Set dependency on ActiveSupport to 2.3.x since it ain't compatible to version 3.x yet
333
- * Publishers catch a wider range (all?) of possible exceptions when publishing messages
334
- * Redis Configuration Servers detect and warn when unknown Redis Configuration Clients connect
335
-
336
- == Version 0.2.5
337
-
338
- Added missing files to gem and rdoc
339
-
340
- == Version 0.2.4
341
-
342
- Log and send a system notification when pong message from unknown client received.
343
-
344
- == Version 0.2.2
345
-
346
- Patch release which upgrades to redis-rb 2.0.4. This enables us to drop our redis monkey
347
- patch which enabled connection timeouts for earlier redis versions. Note that earlier
348
- Beetle versions are not compatible with redis 2.0.4.
349
-
350
- == Version 0.2.1
351
-
352
- Improved error message when no rabbitmq broker is available.
353
-
354
- == Version 0.2
355
-
356
- This version adds support for automatic redis deduplication store failover (see separate
357
- file REDIS_AUTO_FAILOVER.rdoc).
358
-
359
- === User visible changes
360
-
361
- * it's possible to register auto deleted queues and exchanges
362
- * Beetle::Client#configure returns self in order to simplify client setup
363
- * it's possible to trace specific messages (see Beetle::Client#trace)
364
- * default message handler timeout is 10 minutes now
365
- * system wide configuration values can be specified via a yml formatted configuration
366
- file (Beetle::Configuration#config_file)
367
- * the config value redis_server specifies either a single server or a file path (used
368
- by the automatic redis failover logic)
369
-
370
- === Fugs Bixed
371
-
372
- * handle active_support seconds notation for handler timeouts correctly
373
- * error handler was erroneously called for expired messages
374
- * subscribers would block when some non beetle process posts an undecodable message
375
-
376
- === Gem Dependency Changes
377
-
378
- * redis needs to be at least version 2.0.3
379
- * we make use of the SystemTimer gem for ruby 1.8.7
380
-
381
- == Version 0.1
382
-
383
- Initial Release
data/examples/README.rdoc DELETED
@@ -1,12 +0,0 @@
1
- === Examples
2
-
3
- Beetle ships with a number of {example scripts}[http://github.com/xing/beetle/tree/master/examples/].
4
-
5
- The top level Rakefile comes with targets to start several RabbitMQ and redis instances
6
- locally. Make sure the corresponding binaries are in your search path. Open four new shell
7
- windows and execute the following commands:
8
-
9
- rake rabbit:start1
10
- rake rabbit:start2
11
- rake redis:start:master
12
- rake redis:start:slave