beetle 3.5.1 → 3.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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