ruby-kafka 0.6.1 → 0.6.2
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 +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
|