beetle 3.4.2 → 3.5.3

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,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