ruby-kafka 0.6.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/kafka/broker.rb +6 -0
- data/lib/kafka/client.rb +7 -0
- data/lib/kafka/cluster.rb +9 -0
- data/lib/kafka/protocol.rb +3 -0
- data/lib/kafka/protocol/list_groups_request.rb +23 -0
- data/lib/kafka/protocol/list_groups_response.rb +35 -0
- data/lib/kafka/ssl_socket_with_timeout.rb +5 -3
- data/lib/kafka/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1f2b126f35425a1fde1e65ae5cac8d8e969416c77c00002a6eac744b23f91bf
|
4
|
+
data.tar.gz: 07dfce70a3e142e4e1efe95fa089466f7d8dd2200f8e25787b9f917b2b6084ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 247ada1eb577419262b6d50aa82b3a39fadcd34e0fad625002786f50e26082c06f13d62ff69ec5a4f0c4791d10a922895e3af179ef38d2cf08e8621171966c03
|
7
|
+
data.tar.gz: 5b12bcb7277c39ba03308074b6f0998019f4535a8484275b4b19614e7b9bca539f4e14a9edb8eea1b82439d872deec362c5305034d6d7c4d9b1bdb475025dd2b
|
data/CHANGELOG.md
CHANGED
data/lib/kafka/broker.rb
CHANGED
data/lib/kafka/client.rb
CHANGED
@@ -559,6 +559,13 @@ module Kafka
|
|
559
559
|
@cluster.list_topics
|
560
560
|
end
|
561
561
|
|
562
|
+
# Lists all consumer groups in the cluster
|
563
|
+
#
|
564
|
+
# @return [Array<String>] the list of group ids
|
565
|
+
def groups
|
566
|
+
@cluster.list_groups
|
567
|
+
end
|
568
|
+
|
562
569
|
def has_topic?(topic)
|
563
570
|
@cluster.clear_target_topics
|
564
571
|
@cluster.add_target_topics([topic])
|
data/lib/kafka/cluster.rb
CHANGED
@@ -337,6 +337,15 @@ module Kafka
|
|
337
337
|
end.map(&:topic_name)
|
338
338
|
end
|
339
339
|
|
340
|
+
def list_groups
|
341
|
+
refresh_metadata_if_necessary!
|
342
|
+
cluster_info.brokers.map do |broker|
|
343
|
+
response = connect_to_broker(broker.node_id).list_groups
|
344
|
+
Protocol.handle_error(response.error_code)
|
345
|
+
response.groups.map(&:group_id)
|
346
|
+
end.flatten.uniq
|
347
|
+
end
|
348
|
+
|
340
349
|
def disconnect
|
341
350
|
@broker_pool.close
|
342
351
|
end
|
data/lib/kafka/protocol.rb
CHANGED
@@ -25,6 +25,7 @@ module Kafka
|
|
25
25
|
HEARTBEAT_API = 12
|
26
26
|
LEAVE_GROUP_API = 13
|
27
27
|
SYNC_GROUP_API = 14
|
28
|
+
LIST_GROUPS_API = 16
|
28
29
|
SASL_HANDSHAKE_API = 17
|
29
30
|
API_VERSIONS_API = 18
|
30
31
|
CREATE_TOPICS_API = 19
|
@@ -177,3 +178,5 @@ require "kafka/protocol/alter_configs_request"
|
|
177
178
|
require "kafka/protocol/alter_configs_response"
|
178
179
|
require "kafka/protocol/create_partitions_request"
|
179
180
|
require "kafka/protocol/create_partitions_response"
|
181
|
+
require "kafka/protocol/list_groups_request"
|
182
|
+
require "kafka/protocol/list_groups_response"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kafka
|
4
|
+
module Protocol
|
5
|
+
class ListGroupsRequest
|
6
|
+
def api_key
|
7
|
+
LIST_GROUPS_API
|
8
|
+
end
|
9
|
+
|
10
|
+
def api_version
|
11
|
+
0
|
12
|
+
end
|
13
|
+
|
14
|
+
def response_class
|
15
|
+
Protocol::ListGroupsResponse
|
16
|
+
end
|
17
|
+
|
18
|
+
def encode(encoder)
|
19
|
+
# noop
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kafka
|
4
|
+
module Protocol
|
5
|
+
class ListGroupsResponse
|
6
|
+
class GroupEntry
|
7
|
+
attr_reader :group_id, :protocol_type
|
8
|
+
|
9
|
+
def initialize(group_id:, protocol_type:)
|
10
|
+
@group_id = group_id
|
11
|
+
@protocol_type = protocol_type
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :error_code, :groups
|
16
|
+
|
17
|
+
def initialize(error_code:, groups:)
|
18
|
+
@error_code = error_code
|
19
|
+
@groups = groups
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.decode(decoder)
|
23
|
+
error_code = decoder.int16
|
24
|
+
groups = decoder.array do
|
25
|
+
GroupEntry.new(
|
26
|
+
group_id: decoder.string,
|
27
|
+
protocol_type: decoder.string
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
new(error_code: error_code, groups: groups)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -90,13 +90,14 @@ module Kafka
|
|
90
90
|
# @raise [Errno::ETIMEDOUT] if the timeout is exceeded.
|
91
91
|
# @return [String] the data that was read from the socket.
|
92
92
|
def read(num_bytes)
|
93
|
-
buffer =
|
93
|
+
buffer = String.new
|
94
|
+
|
94
95
|
until buffer.length >= num_bytes
|
95
96
|
begin
|
96
|
-
#
|
97
|
+
# Unlike plain TCP sockets, SSL sockets don't support IO.select
|
97
98
|
# properly.
|
98
99
|
# Instead, timeouts happen on a per read basis, and we have to
|
99
|
-
# catch exceptions from read_nonblock
|
100
|
+
# catch exceptions from read_nonblock and gradually build up
|
100
101
|
# our read buffer.
|
101
102
|
buffer << @ssl_socket.read_nonblock(num_bytes - buffer.length)
|
102
103
|
rescue IO::WaitReadable
|
@@ -113,6 +114,7 @@ module Kafka
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
end
|
117
|
+
|
116
118
|
buffer
|
117
119
|
end
|
118
120
|
|
data/lib/kafka/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-kafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -362,6 +362,8 @@ files:
|
|
362
362
|
- lib/kafka/protocol/join_group_response.rb
|
363
363
|
- lib/kafka/protocol/leave_group_request.rb
|
364
364
|
- lib/kafka/protocol/leave_group_response.rb
|
365
|
+
- lib/kafka/protocol/list_groups_request.rb
|
366
|
+
- lib/kafka/protocol/list_groups_response.rb
|
365
367
|
- lib/kafka/protocol/list_offset_request.rb
|
366
368
|
- lib/kafka/protocol/list_offset_response.rb
|
367
369
|
- lib/kafka/protocol/member_assignment.rb
|