ruby-kafka-aws-iam 1.4.1
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.
- checksums.yaml +7 -0
- data/.circleci/config.yml +393 -0
- data/.github/workflows/stale.yml +19 -0
- data/.gitignore +13 -0
- data/.readygo +1 -0
- data/.rspec +3 -0
- data/.rubocop.yml +44 -0
- data/.ruby-version +1 -0
- data/.yardopts +3 -0
- data/CHANGELOG.md +314 -0
- data/Gemfile +5 -0
- data/ISSUE_TEMPLATE.md +23 -0
- data/LICENSE.txt +176 -0
- data/Procfile +2 -0
- data/README.md +1356 -0
- data/Rakefile +8 -0
- data/benchmarks/message_encoding.rb +23 -0
- data/bin/console +8 -0
- data/bin/setup +5 -0
- data/docker-compose.yml +39 -0
- data/examples/consumer-group.rb +35 -0
- data/examples/firehose-consumer.rb +64 -0
- data/examples/firehose-producer.rb +54 -0
- data/examples/simple-consumer.rb +34 -0
- data/examples/simple-producer.rb +42 -0
- data/examples/ssl-producer.rb +44 -0
- data/lib/kafka/async_producer.rb +297 -0
- data/lib/kafka/broker.rb +217 -0
- data/lib/kafka/broker_info.rb +16 -0
- data/lib/kafka/broker_pool.rb +41 -0
- data/lib/kafka/broker_uri.rb +43 -0
- data/lib/kafka/client.rb +838 -0
- data/lib/kafka/cluster.rb +513 -0
- data/lib/kafka/compression.rb +45 -0
- data/lib/kafka/compressor.rb +86 -0
- data/lib/kafka/connection.rb +228 -0
- data/lib/kafka/connection_builder.rb +33 -0
- data/lib/kafka/consumer.rb +642 -0
- data/lib/kafka/consumer_group/assignor.rb +63 -0
- data/lib/kafka/consumer_group.rb +231 -0
- data/lib/kafka/crc32_hash.rb +15 -0
- data/lib/kafka/datadog.rb +420 -0
- data/lib/kafka/digest.rb +22 -0
- data/lib/kafka/fetch_operation.rb +115 -0
- data/lib/kafka/fetched_batch.rb +58 -0
- data/lib/kafka/fetched_batch_generator.rb +120 -0
- data/lib/kafka/fetched_message.rb +48 -0
- data/lib/kafka/fetched_offset_resolver.rb +48 -0
- data/lib/kafka/fetcher.rb +224 -0
- data/lib/kafka/gzip_codec.rb +34 -0
- data/lib/kafka/heartbeat.rb +25 -0
- data/lib/kafka/instrumenter.rb +38 -0
- data/lib/kafka/interceptors.rb +33 -0
- data/lib/kafka/lz4_codec.rb +27 -0
- data/lib/kafka/message_buffer.rb +87 -0
- data/lib/kafka/murmur2_hash.rb +17 -0
- data/lib/kafka/offset_manager.rb +259 -0
- data/lib/kafka/partitioner.rb +40 -0
- data/lib/kafka/pause.rb +92 -0
- data/lib/kafka/pending_message.rb +29 -0
- data/lib/kafka/pending_message_queue.rb +41 -0
- data/lib/kafka/produce_operation.rb +205 -0
- data/lib/kafka/producer.rb +528 -0
- data/lib/kafka/prometheus.rb +316 -0
- data/lib/kafka/protocol/add_offsets_to_txn_request.rb +29 -0
- data/lib/kafka/protocol/add_offsets_to_txn_response.rb +21 -0
- data/lib/kafka/protocol/add_partitions_to_txn_request.rb +34 -0
- data/lib/kafka/protocol/add_partitions_to_txn_response.rb +47 -0
- data/lib/kafka/protocol/alter_configs_request.rb +44 -0
- data/lib/kafka/protocol/alter_configs_response.rb +49 -0
- data/lib/kafka/protocol/api_versions_request.rb +21 -0
- data/lib/kafka/protocol/api_versions_response.rb +53 -0
- data/lib/kafka/protocol/consumer_group_protocol.rb +19 -0
- data/lib/kafka/protocol/create_partitions_request.rb +42 -0
- data/lib/kafka/protocol/create_partitions_response.rb +28 -0
- data/lib/kafka/protocol/create_topics_request.rb +45 -0
- data/lib/kafka/protocol/create_topics_response.rb +26 -0
- data/lib/kafka/protocol/decoder.rb +175 -0
- data/lib/kafka/protocol/delete_topics_request.rb +33 -0
- data/lib/kafka/protocol/delete_topics_response.rb +26 -0
- data/lib/kafka/protocol/describe_configs_request.rb +35 -0
- data/lib/kafka/protocol/describe_configs_response.rb +73 -0
- data/lib/kafka/protocol/describe_groups_request.rb +27 -0
- data/lib/kafka/protocol/describe_groups_response.rb +73 -0
- data/lib/kafka/protocol/encoder.rb +184 -0
- data/lib/kafka/protocol/end_txn_request.rb +29 -0
- data/lib/kafka/protocol/end_txn_response.rb +19 -0
- data/lib/kafka/protocol/fetch_request.rb +70 -0
- data/lib/kafka/protocol/fetch_response.rb +136 -0
- data/lib/kafka/protocol/find_coordinator_request.rb +29 -0
- data/lib/kafka/protocol/find_coordinator_response.rb +29 -0
- data/lib/kafka/protocol/heartbeat_request.rb +27 -0
- data/lib/kafka/protocol/heartbeat_response.rb +17 -0
- data/lib/kafka/protocol/init_producer_id_request.rb +26 -0
- data/lib/kafka/protocol/init_producer_id_response.rb +27 -0
- data/lib/kafka/protocol/join_group_request.rb +47 -0
- data/lib/kafka/protocol/join_group_response.rb +41 -0
- data/lib/kafka/protocol/leave_group_request.rb +25 -0
- data/lib/kafka/protocol/leave_group_response.rb +17 -0
- data/lib/kafka/protocol/list_groups_request.rb +23 -0
- data/lib/kafka/protocol/list_groups_response.rb +35 -0
- data/lib/kafka/protocol/list_offset_request.rb +53 -0
- data/lib/kafka/protocol/list_offset_response.rb +89 -0
- data/lib/kafka/protocol/member_assignment.rb +42 -0
- data/lib/kafka/protocol/message.rb +172 -0
- data/lib/kafka/protocol/message_set.rb +55 -0
- data/lib/kafka/protocol/metadata_request.rb +31 -0
- data/lib/kafka/protocol/metadata_response.rb +185 -0
- data/lib/kafka/protocol/offset_commit_request.rb +47 -0
- data/lib/kafka/protocol/offset_commit_response.rb +29 -0
- data/lib/kafka/protocol/offset_fetch_request.rb +38 -0
- data/lib/kafka/protocol/offset_fetch_response.rb +56 -0
- data/lib/kafka/protocol/produce_request.rb +94 -0
- data/lib/kafka/protocol/produce_response.rb +63 -0
- data/lib/kafka/protocol/record.rb +88 -0
- data/lib/kafka/protocol/record_batch.rb +223 -0
- data/lib/kafka/protocol/request_message.rb +26 -0
- data/lib/kafka/protocol/sasl_handshake_request.rb +33 -0
- data/lib/kafka/protocol/sasl_handshake_response.rb +28 -0
- data/lib/kafka/protocol/sync_group_request.rb +33 -0
- data/lib/kafka/protocol/sync_group_response.rb +26 -0
- data/lib/kafka/protocol/txn_offset_commit_request.rb +46 -0
- data/lib/kafka/protocol/txn_offset_commit_response.rb +47 -0
- data/lib/kafka/protocol.rb +225 -0
- data/lib/kafka/round_robin_assignment_strategy.rb +52 -0
- data/lib/kafka/sasl/awsmskiam.rb +128 -0
- data/lib/kafka/sasl/gssapi.rb +76 -0
- data/lib/kafka/sasl/oauth.rb +64 -0
- data/lib/kafka/sasl/plain.rb +39 -0
- data/lib/kafka/sasl/scram.rb +180 -0
- data/lib/kafka/sasl_authenticator.rb +73 -0
- data/lib/kafka/snappy_codec.rb +29 -0
- data/lib/kafka/socket_with_timeout.rb +96 -0
- data/lib/kafka/ssl_context.rb +66 -0
- data/lib/kafka/ssl_socket_with_timeout.rb +192 -0
- data/lib/kafka/statsd.rb +296 -0
- data/lib/kafka/tagged_logger.rb +77 -0
- data/lib/kafka/transaction_manager.rb +306 -0
- data/lib/kafka/transaction_state_machine.rb +72 -0
- data/lib/kafka/version.rb +5 -0
- data/lib/kafka/zstd_codec.rb +27 -0
- data/lib/kafka.rb +373 -0
- data/lib/ruby-kafka.rb +5 -0
- data/ruby-kafka.gemspec +54 -0
- metadata +520 -0
data/lib/kafka.rb
ADDED
@@ -0,0 +1,373 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "kafka/version"
|
4
|
+
|
5
|
+
module Kafka
|
6
|
+
class Error < StandardError
|
7
|
+
end
|
8
|
+
|
9
|
+
# There was an error processing a message.
|
10
|
+
class ProcessingError < Error
|
11
|
+
attr_reader :topic, :partition, :offset
|
12
|
+
|
13
|
+
def initialize(topic, partition, offset)
|
14
|
+
@topic = topic
|
15
|
+
@partition = partition
|
16
|
+
@offset = offset
|
17
|
+
|
18
|
+
super()
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Subclasses of this exception class map to an error code described in the
|
23
|
+
# Kafka protocol specification.
|
24
|
+
# https://kafka.apache.org/protocol#protocol_error_codes
|
25
|
+
class ProtocolError < Error
|
26
|
+
end
|
27
|
+
|
28
|
+
# -1
|
29
|
+
# The server experienced an unexpected error when processing the request
|
30
|
+
class UnknownError < ProtocolError
|
31
|
+
end
|
32
|
+
|
33
|
+
# 1
|
34
|
+
# The requested offset is not within the range of offsets maintained by the server.
|
35
|
+
class OffsetOutOfRange < ProtocolError
|
36
|
+
attr_accessor :topic, :partition, :offset
|
37
|
+
end
|
38
|
+
|
39
|
+
# 2
|
40
|
+
# This indicates that a message contents does not match its CRC.
|
41
|
+
class CorruptMessage < ProtocolError
|
42
|
+
end
|
43
|
+
|
44
|
+
# 3
|
45
|
+
# The request is for a topic or partition that does not exist on the broker.
|
46
|
+
class UnknownTopicOrPartition < ProtocolError
|
47
|
+
end
|
48
|
+
|
49
|
+
# 4
|
50
|
+
# The message has a negative size.
|
51
|
+
class InvalidMessageSize < ProtocolError
|
52
|
+
end
|
53
|
+
|
54
|
+
# 5
|
55
|
+
# This error is thrown if we are in the middle of a leadership election and
|
56
|
+
# there is currently no leader for this partition and hence it is unavailable
|
57
|
+
# for writes.
|
58
|
+
class LeaderNotAvailable < ProtocolError
|
59
|
+
end
|
60
|
+
|
61
|
+
# 6
|
62
|
+
# This error is thrown if the client attempts to send messages to a replica
|
63
|
+
# that is not the leader for some partition. It indicates that the client's
|
64
|
+
# metadata is out of date.
|
65
|
+
class NotLeaderForPartition < ProtocolError
|
66
|
+
end
|
67
|
+
|
68
|
+
# 7
|
69
|
+
# This error is thrown if the request exceeds the user-specified time limit
|
70
|
+
# in the request.
|
71
|
+
class RequestTimedOut < ProtocolError
|
72
|
+
end
|
73
|
+
|
74
|
+
# 8
|
75
|
+
# The broker is not available.
|
76
|
+
class BrokerNotAvailable < ProtocolError
|
77
|
+
end
|
78
|
+
|
79
|
+
# 9
|
80
|
+
# Raised if a replica is expected on a broker, but is not. Can be safely ignored.
|
81
|
+
class ReplicaNotAvailable < ProtocolError
|
82
|
+
end
|
83
|
+
|
84
|
+
# 10
|
85
|
+
# The server has a configurable maximum message size to avoid unbounded memory
|
86
|
+
# allocation. This error is thrown if the client attempt to produce a message
|
87
|
+
# larger than this maximum.
|
88
|
+
class MessageSizeTooLarge < ProtocolError
|
89
|
+
end
|
90
|
+
|
91
|
+
# 11
|
92
|
+
# The controller moved to another broker.
|
93
|
+
class StaleControllerEpoch < ProtocolError
|
94
|
+
end
|
95
|
+
|
96
|
+
# 12
|
97
|
+
# If you specify a string larger than configured maximum for offset metadata.
|
98
|
+
class OffsetMetadataTooLarge < ProtocolError
|
99
|
+
end
|
100
|
+
|
101
|
+
# 13
|
102
|
+
# The server disconnected before a response was received.
|
103
|
+
class NetworkException < ProtocolError
|
104
|
+
end
|
105
|
+
|
106
|
+
# 14
|
107
|
+
# The coordinator is loading and hence can't process requests.
|
108
|
+
class CoordinatorLoadInProgress < ProtocolError
|
109
|
+
end
|
110
|
+
|
111
|
+
# 15
|
112
|
+
# The coordinator is not available.
|
113
|
+
class CoordinatorNotAvailable < ProtocolError
|
114
|
+
end
|
115
|
+
|
116
|
+
# 16
|
117
|
+
# This is not the correct coordinator.
|
118
|
+
class NotCoordinatorForGroup < ProtocolError
|
119
|
+
end
|
120
|
+
|
121
|
+
# 17
|
122
|
+
# For a request which attempts to access an invalid topic (e.g. one which has
|
123
|
+
# an illegal name), or if an attempt is made to write to an internal topic
|
124
|
+
# (such as the consumer offsets topic).
|
125
|
+
class InvalidTopic < ProtocolError
|
126
|
+
end
|
127
|
+
|
128
|
+
# 18
|
129
|
+
# If a message batch in a produce request exceeds the maximum configured
|
130
|
+
# segment size.
|
131
|
+
class RecordListTooLarge < ProtocolError
|
132
|
+
end
|
133
|
+
|
134
|
+
# 19
|
135
|
+
# Returned from a produce request when the number of in-sync replicas is
|
136
|
+
# lower than the configured minimum and requiredAcks is -1.
|
137
|
+
class NotEnoughReplicas < ProtocolError
|
138
|
+
end
|
139
|
+
|
140
|
+
# 20
|
141
|
+
# Returned from a produce request when the message was written to the log,
|
142
|
+
# but with fewer in-sync replicas than required.
|
143
|
+
class NotEnoughReplicasAfterAppend < ProtocolError
|
144
|
+
end
|
145
|
+
|
146
|
+
# 21
|
147
|
+
# Returned from a produce request if the requested requiredAcks is invalid
|
148
|
+
# (anything other than -1, 1, or 0).
|
149
|
+
class InvalidRequiredAcks < ProtocolError
|
150
|
+
end
|
151
|
+
|
152
|
+
# 22
|
153
|
+
# Specified group generation id is not valid.
|
154
|
+
class IllegalGeneration < ProtocolError
|
155
|
+
end
|
156
|
+
|
157
|
+
# 23
|
158
|
+
# The group member's supported protocols are incompatible with those of existing members or first group member tried to join with empty protocol type or empty protocol list.
|
159
|
+
class InconsistentGroupProtocol < ProtocolError
|
160
|
+
end
|
161
|
+
|
162
|
+
# 24
|
163
|
+
# The configured groupId is invalid
|
164
|
+
class InvalidGroupId < ProtocolError
|
165
|
+
end
|
166
|
+
|
167
|
+
# 25
|
168
|
+
# The coordinator is not aware of this member.
|
169
|
+
class UnknownMemberId < ProtocolError
|
170
|
+
end
|
171
|
+
|
172
|
+
# 26
|
173
|
+
# The session timeout is not within the range allowed by the broker
|
174
|
+
class InvalidSessionTimeout < ProtocolError
|
175
|
+
end
|
176
|
+
|
177
|
+
# 27
|
178
|
+
# The group is rebalancing, so a rejoin is needed.
|
179
|
+
class RebalanceInProgress < ProtocolError
|
180
|
+
end
|
181
|
+
|
182
|
+
# 28
|
183
|
+
# The committing offset data size is not valid
|
184
|
+
class InvalidCommitOffsetSize < ProtocolError
|
185
|
+
end
|
186
|
+
|
187
|
+
# 29
|
188
|
+
class TopicAuthorizationFailed < ProtocolError
|
189
|
+
end
|
190
|
+
|
191
|
+
# 30
|
192
|
+
class GroupAuthorizationFailed < ProtocolError
|
193
|
+
end
|
194
|
+
|
195
|
+
# 31
|
196
|
+
class ClusterAuthorizationFailed < ProtocolError
|
197
|
+
end
|
198
|
+
|
199
|
+
# 32
|
200
|
+
# The timestamp of the message is out of acceptable range.
|
201
|
+
class InvalidTimestamp < ProtocolError
|
202
|
+
end
|
203
|
+
|
204
|
+
# 33
|
205
|
+
# The broker does not support the requested SASL mechanism.
|
206
|
+
class UnsupportedSaslMechanism < ProtocolError
|
207
|
+
end
|
208
|
+
|
209
|
+
# 34
|
210
|
+
class InvalidSaslState < ProtocolError
|
211
|
+
end
|
212
|
+
|
213
|
+
# 35
|
214
|
+
class UnsupportedVersion < ProtocolError
|
215
|
+
end
|
216
|
+
|
217
|
+
# 36
|
218
|
+
class TopicAlreadyExists < ProtocolError
|
219
|
+
end
|
220
|
+
|
221
|
+
# 37
|
222
|
+
# Number of partitions is below 1.
|
223
|
+
class InvalidPartitions < ProtocolError
|
224
|
+
end
|
225
|
+
|
226
|
+
# 38
|
227
|
+
# Replication factor is below 1 or larger than the number of available brokers.
|
228
|
+
class InvalidReplicationFactor < ProtocolError
|
229
|
+
end
|
230
|
+
|
231
|
+
# 39
|
232
|
+
class InvalidReplicaAssignment < ProtocolError
|
233
|
+
end
|
234
|
+
|
235
|
+
# 40
|
236
|
+
class InvalidConfig < ProtocolError
|
237
|
+
end
|
238
|
+
|
239
|
+
# 41
|
240
|
+
# This is not the correct controller for this cluster.
|
241
|
+
class NotController < ProtocolError
|
242
|
+
end
|
243
|
+
|
244
|
+
# 42
|
245
|
+
class InvalidRequest < ProtocolError
|
246
|
+
end
|
247
|
+
|
248
|
+
# 43
|
249
|
+
# The message format version on the broker does not support the request.
|
250
|
+
class UnsupportedForMessageFormat < ProtocolError
|
251
|
+
end
|
252
|
+
|
253
|
+
# 44
|
254
|
+
# Request parameters do not satisfy the configured policy.
|
255
|
+
class PolicyViolation < ProtocolError
|
256
|
+
end
|
257
|
+
|
258
|
+
# 45
|
259
|
+
# The broker received an out of order sequence number
|
260
|
+
class OutOfOrderSequenceNumberError < Error
|
261
|
+
end
|
262
|
+
|
263
|
+
# 46
|
264
|
+
# The broker received a duplicate sequence number
|
265
|
+
class DuplicateSequenceNumberError < Error
|
266
|
+
end
|
267
|
+
|
268
|
+
# 47
|
269
|
+
# Producer attempted an operation with an old epoch. Either there is a newer producer with the same transactionalId, or the producer's transaction has been expired by the broker.
|
270
|
+
class InvalidProducerEpochError < Error
|
271
|
+
end
|
272
|
+
|
273
|
+
# 48
|
274
|
+
# The producer attempted a transactional operation in an invalid state
|
275
|
+
class InvalidTxnStateError < Error
|
276
|
+
end
|
277
|
+
|
278
|
+
# 49
|
279
|
+
# The producer attempted to use a producer id which is not currently assigned to its transactional id
|
280
|
+
class InvalidProducerIDMappingError < Error
|
281
|
+
end
|
282
|
+
|
283
|
+
# 50
|
284
|
+
# The transaction timeout is larger than the maximum value allowed by the broker (as configured by transaction.max.timeout.ms).
|
285
|
+
class InvalidTransactionTimeoutError < Error
|
286
|
+
end
|
287
|
+
|
288
|
+
# 51
|
289
|
+
# The producer attempted to update a transaction while another concurrent operation on the same transaction was ongoing
|
290
|
+
class ConcurrentTransactionError < Error
|
291
|
+
end
|
292
|
+
|
293
|
+
# 52
|
294
|
+
# Indicates that the transaction coordinator sending a WriteTxnMarker is no longer the current coordinator for a given producer
|
295
|
+
class TransactionCoordinatorFencedError < Error
|
296
|
+
end
|
297
|
+
|
298
|
+
###
|
299
|
+
# ruby-kafka errors
|
300
|
+
###
|
301
|
+
|
302
|
+
# A fetch operation was executed with no partitions specified.
|
303
|
+
class NoPartitionsToFetchFrom < Error
|
304
|
+
end
|
305
|
+
|
306
|
+
# A message in a partition is larger than the maximum we've asked for.
|
307
|
+
class MessageTooLargeToRead < Error
|
308
|
+
end
|
309
|
+
|
310
|
+
# A connection has been unused for too long, we assume the server has killed it.
|
311
|
+
class IdleConnection < Error
|
312
|
+
end
|
313
|
+
|
314
|
+
# When the record array length doesn't match real number of received records
|
315
|
+
class InsufficientDataMessage < Error
|
316
|
+
end
|
317
|
+
# Raised when there's a network connection error.
|
318
|
+
class ConnectionError < Error
|
319
|
+
end
|
320
|
+
|
321
|
+
class NoSuchBroker < Error
|
322
|
+
end
|
323
|
+
|
324
|
+
# Raised when a producer buffer has reached its maximum size.
|
325
|
+
class BufferOverflow < Error
|
326
|
+
end
|
327
|
+
|
328
|
+
# Raised if not all messages could be sent by a producer.
|
329
|
+
class DeliveryFailed < Error
|
330
|
+
attr_reader :failed_messages
|
331
|
+
|
332
|
+
def initialize(message, failed_messages)
|
333
|
+
@failed_messages = failed_messages
|
334
|
+
|
335
|
+
super(message)
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
class HeartbeatError < Error
|
340
|
+
end
|
341
|
+
|
342
|
+
class OffsetCommitError < Error
|
343
|
+
end
|
344
|
+
|
345
|
+
class FetchError < Error
|
346
|
+
end
|
347
|
+
|
348
|
+
class SaslScramError < Error
|
349
|
+
end
|
350
|
+
|
351
|
+
class FailedScramAuthentication < SaslScramError
|
352
|
+
end
|
353
|
+
|
354
|
+
# The Token Provider object used for SASL OAuthBearer does not implement the method `token`
|
355
|
+
class TokenMethodNotImplementedError < Error
|
356
|
+
end
|
357
|
+
|
358
|
+
# Initializes a new Kafka client.
|
359
|
+
#
|
360
|
+
# @see Client#initialize
|
361
|
+
# @return [Client]
|
362
|
+
def self.new(seed_brokers = nil, **options)
|
363
|
+
# We allow `seed_brokers` to be passed in either as a positional _or_ as a
|
364
|
+
# keyword argument.
|
365
|
+
if seed_brokers.nil?
|
366
|
+
Client.new(**options)
|
367
|
+
else
|
368
|
+
Client.new(seed_brokers: seed_brokers, **options)
|
369
|
+
end
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
require "kafka/client"
|
data/lib/ruby-kafka.rb
ADDED
data/ruby-kafka.gemspec
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
lib = File.expand_path('../lib', __FILE__)
|
5
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
+
require 'kafka/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = "ruby-kafka-aws-iam"
|
10
|
+
spec.version = Kafka::VERSION
|
11
|
+
spec.authors = ["Daniel Schierbeck"]
|
12
|
+
spec.email = ["daniel.schierbeck@gmail.com"]
|
13
|
+
|
14
|
+
spec.summary = "A client library for the Kafka distributed commit log."
|
15
|
+
|
16
|
+
spec.description = <<-DESC.gsub(/^ /, "").strip
|
17
|
+
A client library for the Kafka distributed commit log.
|
18
|
+
DESC
|
19
|
+
|
20
|
+
spec.homepage = "https://github.com/zendesk/ruby-kafka"
|
21
|
+
spec.license = "Apache-2.0"
|
22
|
+
|
23
|
+
spec.required_ruby_version = '>= 2.1.0'
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_dependency 'digest-crc'
|
31
|
+
|
32
|
+
spec.add_development_dependency "bundler", ">= 1.9.5"
|
33
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
34
|
+
spec.add_development_dependency "rspec"
|
35
|
+
spec.add_development_dependency "pry"
|
36
|
+
spec.add_development_dependency "digest-murmurhash"
|
37
|
+
spec.add_development_dependency "dotenv"
|
38
|
+
spec.add_development_dependency "docker-api"
|
39
|
+
spec.add_development_dependency "rspec-benchmark"
|
40
|
+
spec.add_development_dependency "activesupport", ">= 4.0", "< 6.1"
|
41
|
+
spec.add_development_dependency "snappy"
|
42
|
+
spec.add_development_dependency "extlz4"
|
43
|
+
spec.add_development_dependency "zstd-ruby"
|
44
|
+
spec.add_development_dependency "colored"
|
45
|
+
spec.add_development_dependency "rspec_junit_formatter", "0.2.2"
|
46
|
+
spec.add_development_dependency "dogstatsd-ruby", ">= 4.0.0", "< 5.0.0"
|
47
|
+
spec.add_development_dependency "statsd-ruby"
|
48
|
+
spec.add_development_dependency "prometheus-client", "~> 0.10.0"
|
49
|
+
spec.add_development_dependency "ruby-prof"
|
50
|
+
spec.add_development_dependency "timecop"
|
51
|
+
spec.add_development_dependency "rubocop", "~> 0.49.1"
|
52
|
+
spec.add_development_dependency "gssapi", ">= 1.2.0"
|
53
|
+
spec.add_development_dependency "stackprof"
|
54
|
+
end
|