beetle 3.5.0 → 3.5.4

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