kafka_rest_client 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -8
- data/kafka_rest_client.gemspec +2 -1
- data/lib/kafka_rest_client/configuration.rb +6 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9497ee5597ab5815d3ed45ccf8cda2b727b52dcf
|
4
|
+
data.tar.gz: d5cae81efa60f85790db320eec4add0bc816dd1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83020327a759b9911b1ce1bf81a88d08d39743ca43967b7ee39408a45787271f2cb0b10e110efe3104e786577e4b3b0eee567a29570562dfd3e4bae8391a86b6
|
7
|
+
data.tar.gz: 8a3aa2ce7671c8ec923e63f99675092ce3340c2fea9a087964b598a95505b9a55b7f612bba5e25d92fdc378ce6da288919e4b0e7a3a2d2ceb93a9151d28a7b1e
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
A Ruby client to interact with [Kafka REST Proxy](http://docs.confluent.io/1.0.1/kafka-rest/docs/index.html)
|
4
4
|
|
5
|
-
**Current Version:** 0.1
|
5
|
+
**Current Version:** 0.2.1
|
6
6
|
|
7
7
|
**Supported Ruby versions:** 2.0, 2.1, 2.2
|
8
8
|
|
@@ -11,37 +11,43 @@ A Ruby client to interact with [Kafka REST Proxy](http://docs.confluent.io/1.0.1
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'kafka_rest_client', git: 'git@github.com:FundingCircle/kafka_rest_client.git', tag: 'v0.1
|
14
|
+
gem 'kafka_rest_client', git: 'git@github.com:FundingCircle/kafka_rest_client.git', tag: 'v0.2.1'
|
15
15
|
```
|
16
16
|
|
17
17
|
## Usage
|
18
|
+
### Configuration
|
18
19
|
|
19
|
-
### Producing events
|
20
20
|
```ruby
|
21
|
-
require 'kafka_rest_client'
|
22
|
-
|
23
21
|
# Configure global settings
|
22
|
+
# The client is disabled if kafka_proxy_url and schema_registry_url are not set
|
24
23
|
KafkaRestClient.configure do |config|
|
25
24
|
config.kafka_proxy_url = ENV['KAFKA_PROXY_URL']
|
26
25
|
config.schema_registry_url = ENV['SCHEMA_REGISTRY_URL']
|
27
26
|
config.timeout = 10
|
28
27
|
config.logger = Rails.logger
|
29
28
|
end
|
29
|
+
```
|
30
|
+
|
31
|
+
### Producing events
|
32
|
+
```ruby
|
33
|
+
require 'kafka_rest_client'
|
30
34
|
|
31
35
|
producer = KafkaRestClient::AvroProducer.new
|
32
36
|
|
33
37
|
# Produce a single event using the topic name and payload
|
34
|
-
# The
|
38
|
+
# The schema_id will be fetched from the schema registry by looking up a schema
|
39
|
+
# with the "#{topic}-value" name
|
35
40
|
producer.produce('ice-cream-melted', { temperature: 35, unit: 'celsius' })
|
36
41
|
|
37
42
|
# Produce multiple events
|
38
|
-
# The
|
43
|
+
# The schema_id will be fetched from the schema registry by looking up a schema
|
44
|
+
# with the "#{topic}-value" name
|
39
45
|
producer.produce('ice-cream-melted', [{ temperature: 35, unit: 'celsius' }])
|
40
46
|
|
41
47
|
# Produce an event providing the schema id
|
42
48
|
producer.produce('ice-cream-melted', { temperature: 35, unit: 'celsius' }, value_schema_id: 1)
|
43
49
|
|
44
|
-
# Produce an event providing the full schema
|
50
|
+
# Produce an event providing the full schema as a JSON string
|
45
51
|
schema = {
|
46
52
|
type: 'record',
|
47
53
|
name: 'IceCreamMelted',
|
@@ -71,6 +77,8 @@ rescue KafkaRestClient::SchemaNotFoundError => e
|
|
71
77
|
# Schema has not been registered in the schema registry
|
72
78
|
rescue KafkaRestClient::TopicNotFoundError => e
|
73
79
|
# Topic does not exist in Kafka, create it with confluent tools
|
80
|
+
rescue Net::ReadTimeout => e
|
81
|
+
# Rescue read timeout errors
|
74
82
|
end
|
75
83
|
```
|
76
84
|
|
data/kafka_rest_client.gemspec
CHANGED
@@ -4,9 +4,10 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'kafka_rest_client'
|
7
|
-
spec.version = '0.2.
|
7
|
+
spec.version = '0.2.1'
|
8
8
|
spec.authors = ['Funding Circle Engineering']
|
9
9
|
spec.email = ['engineering+kafka_rest_client@fundingcircle.com']
|
10
|
+
spec.licenses = ['BSD-3-Clause']
|
10
11
|
|
11
12
|
spec.summary = 'Ruby client for interacting with Kafka REST Proxy'
|
12
13
|
spec.description = 'Ruby client for interacting with Kafka REST Proxy'
|
@@ -5,6 +5,10 @@ module KafkaRestClient
|
|
5
5
|
attr_accessor :kafka_proxy_url, :schema_registry_url, :timeout, :logger
|
6
6
|
class << self
|
7
7
|
attr_accessor :current
|
8
|
+
|
9
|
+
def current
|
10
|
+
@current ||= Configuration.new
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
def initialize(options = {})
|
@@ -15,12 +19,12 @@ module KafkaRestClient
|
|
15
19
|
end
|
16
20
|
|
17
21
|
def timeout
|
18
|
-
@timeout ||= 30
|
22
|
+
@timeout ||= 30 # seconds
|
19
23
|
end
|
20
24
|
|
21
25
|
def logger
|
22
26
|
@logger ||= Logger.new(STDOUT).tap do |logger|
|
23
|
-
# Set level too high so we don't log anything
|
27
|
+
# Set level too high so we don't log anything by default
|
24
28
|
logger.level = Logger::FATAL
|
25
29
|
end
|
26
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kafka_rest_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Funding Circle Engineering
|
@@ -159,7 +159,8 @@ files:
|
|
159
159
|
- lib/kafka_rest_client/configuration.rb
|
160
160
|
- lib/kafka_rest_client/errors.rb
|
161
161
|
homepage: http://github.com/FundingCircle/kakfa_rest_client
|
162
|
-
licenses:
|
162
|
+
licenses:
|
163
|
+
- BSD-3-Clause
|
163
164
|
metadata: {}
|
164
165
|
post_install_message:
|
165
166
|
rdoc_options: []
|