beetle 3.5.0 → 3.5.4

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