beetle 3.4.2 → 3.5.3

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