eh_messaging 1.0.0
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/eh_messaging.gemspec +33 -0
- data/lib/eh_messaging/audit_logger.rb +63 -0
- data/lib/eh_messaging/client.rb +72 -0
- data/lib/eh_messaging/configuration.rb +204 -0
- data/lib/eh_messaging/dead_letter_router.rb +24 -0
- data/lib/eh_messaging/envelope.rb +69 -0
- data/lib/eh_messaging/publisher.rb +154 -0
- data/lib/eh_messaging/recoverable_error.rb +5 -0
- data/lib/eh_messaging/subscriber.rb +300 -0
- data/lib/eh_messaging/subscriber_metadata.rb +87 -0
- data/lib/eh_messaging/subscriber_polling.rb +55 -0
- data/lib/eh_messaging/telemetry.rb +55 -0
- data/lib/eh_messaging/topics.rb +10 -0
- data/lib/eh_messaging/version.rb +5 -0
- data/lib/eh_messaging.rb +47 -0
- data/sig/eh_messaging.rbs +168 -0
- metadata +177 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
module EhMessaging
|
|
2
|
+
type payload = Hash[untyped, untyped] | Array[untyped] | String
|
|
3
|
+
type headers = Hash[String | Symbol, untyped]
|
|
4
|
+
type broker_name = Symbol
|
|
5
|
+
type reconsume_options = { ?until_time: Time, ?partitions: Hash[Integer, Integer], ?group: String }
|
|
6
|
+
|
|
7
|
+
class Error < StandardError
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Client
|
|
11
|
+
def initialize: () -> void
|
|
12
|
+
def configure: (**untyped) ?{ (Configuration) -> void } -> self
|
|
13
|
+
def configuration: () -> Configuration
|
|
14
|
+
def publish: (String topic, event: String, application_name: String, component: String, correlation_id: String, version: String, partition_key: untyped, payload: payload, ?headers: headers, ?broker: broker_name | String, ?raw: bool) -> DeliveryReport
|
|
15
|
+
def subscribe: (untyped handler) -> Subscriber
|
|
16
|
+
def reconsume: (untyped handler, **reconsume_options) -> untyped
|
|
17
|
+
def boot: () -> self
|
|
18
|
+
def run: () -> untyped
|
|
19
|
+
def shutdown: () -> untyped
|
|
20
|
+
def reset!: () -> self
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class RecoverableError < StandardError
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Configuration
|
|
27
|
+
attr_accessor application_name: String?
|
|
28
|
+
attr_accessor logging: bool
|
|
29
|
+
attr_accessor log_message_body: bool
|
|
30
|
+
attr_accessor poll_timeout: Numeric
|
|
31
|
+
attr_accessor log_level: String
|
|
32
|
+
attr_accessor logger: untyped
|
|
33
|
+
|
|
34
|
+
attr_reader brokers: Hash[broker_name, Hash[Symbol, untyped]]
|
|
35
|
+
attr_reader topics: Hash[String, Hash[Symbol, untyped]]
|
|
36
|
+
attr_reader producer: ProducerSettings
|
|
37
|
+
attr_reader consumer: ConsumerSettings
|
|
38
|
+
|
|
39
|
+
def initialize: () -> void
|
|
40
|
+
def apply: (**untyped) -> void
|
|
41
|
+
def broker: (broker_name name, **untyped) -> void
|
|
42
|
+
def topic: (String name, ?broker: broker_name?, ?side: Symbol, **untyped) -> void
|
|
43
|
+
def validate!: () -> self
|
|
44
|
+
def broker_config: (?broker_name name) -> Hash[Symbol, untyped]
|
|
45
|
+
def topic_config: (String name, ?side: Symbol?) -> Hash[Symbol, untyped]
|
|
46
|
+
def kafka_config: (Hash[Symbol, untyped] connection, ?kind: Symbol, ?group_id: String?) -> Hash[String, untyped]
|
|
47
|
+
|
|
48
|
+
class Settings
|
|
49
|
+
def to_kafka: () -> Hash[String, untyped]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class ProducerSettings < Settings
|
|
53
|
+
def metadata_max_age_ms: () -> untyped
|
|
54
|
+
def metadata_max_age_ms=: (untyped) -> untyped
|
|
55
|
+
def message_send_max_retries: () -> untyped
|
|
56
|
+
def message_send_max_retries=: (untyped) -> untyped
|
|
57
|
+
def request_timeout_ms: () -> untyped
|
|
58
|
+
def request_timeout_ms=: (untyped) -> untyped
|
|
59
|
+
def socket_keepalive_enable: () -> untyped
|
|
60
|
+
def socket_keepalive_enable=: (untyped) -> untyped
|
|
61
|
+
def batch_num_messages: () -> untyped
|
|
62
|
+
def batch_num_messages=: (untyped) -> untyped
|
|
63
|
+
def linger_ms: () -> untyped
|
|
64
|
+
def linger_ms=: (untyped) -> untyped
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
class ConsumerSettings < Settings
|
|
68
|
+
def socket_timeout_ms: () -> untyped
|
|
69
|
+
def socket_timeout_ms=: (untyped) -> untyped
|
|
70
|
+
def session_timeout_ms: () -> untyped
|
|
71
|
+
def session_timeout_ms=: (untyped) -> untyped
|
|
72
|
+
def heartbeat_interval_ms: () -> untyped
|
|
73
|
+
def heartbeat_interval_ms=: (untyped) -> untyped
|
|
74
|
+
def max_poll_interval_ms: () -> untyped
|
|
75
|
+
def max_poll_interval_ms=: (untyped) -> untyped
|
|
76
|
+
def metadata_max_age_ms: () -> untyped
|
|
77
|
+
def metadata_max_age_ms=: (untyped) -> untyped
|
|
78
|
+
def socket_keepalive_enable: () -> untyped
|
|
79
|
+
def socket_keepalive_enable=: (untyped) -> untyped
|
|
80
|
+
def auto_offset_reset: () -> String
|
|
81
|
+
def auto_offset_reset=: (String) -> void
|
|
82
|
+
def enable_auto_commit: () -> bool
|
|
83
|
+
def enable_auto_commit=: (bool) -> void
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
class Envelope
|
|
88
|
+
attr_reader payload: untyped
|
|
89
|
+
attr_reader partition_key: untyped
|
|
90
|
+
attr_reader headers: Hash[String, untyped]
|
|
91
|
+
attr_reader event_name: String?
|
|
92
|
+
attr_reader event_id: String?
|
|
93
|
+
attr_reader correlation_id: String?
|
|
94
|
+
attr_reader application_name: String?
|
|
95
|
+
attr_reader component_name: String?
|
|
96
|
+
attr_reader version: String?
|
|
97
|
+
attr_reader timestamp: String?
|
|
98
|
+
attr_reader enqueued_at: Time?
|
|
99
|
+
attr_reader topic: String?
|
|
100
|
+
attr_reader partition: Integer?
|
|
101
|
+
attr_reader offset: Integer?
|
|
102
|
+
attr_reader consumer_group: String?
|
|
103
|
+
attr_reader mode: Symbol?
|
|
104
|
+
|
|
105
|
+
def initialize: (payload: untyped, partition_key: untyped, headers: Hash[String, untyped], ?mode: Symbol?, ?consumer_group: String?, ?topic: String?, ?partition: Integer?, ?offset: Integer?, ?enqueued_at: Time?) -> void
|
|
106
|
+
def self.header: (Hash[untyped, untyped] headers, String | Symbol key) -> untyped
|
|
107
|
+
def self.from_message: (untyped message, mode: Symbol, consumer_group: String) -> Envelope
|
|
108
|
+
def self.headers_from_message: (untyped message) -> Hash[String, untyped]
|
|
109
|
+
def self.decode: (untyped value) -> untyped
|
|
110
|
+
def self.header_bytes: (untyped value) -> (String | Array[untyped])
|
|
111
|
+
def self.timestamp: () -> String
|
|
112
|
+
def self.headers: (event: String, application_name: String, component: String, correlation_id: String, version: String, ?headers: headers) -> Hash[String, untyped]
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
class DeliveryReport
|
|
116
|
+
attr_reader raw: untyped
|
|
117
|
+
attr_reader sent_keys: Array[untyped]
|
|
118
|
+
attr_reader error_keys: Array[untyped]
|
|
119
|
+
|
|
120
|
+
def initialize: (untyped raw, untyped key) -> void
|
|
121
|
+
def error: () -> untyped
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
class Publisher
|
|
125
|
+
attr_reader producers: Hash[broker_name, untyped]
|
|
126
|
+
|
|
127
|
+
def initialize: (Configuration configuration, ?producer_factory: untyped, ?logger: untyped) -> void
|
|
128
|
+
def boot: () -> self
|
|
129
|
+
def publish: (String topic, event: String, application_name: String, component: String, correlation_id: String, version: String, partition_key: untyped, payload: payload, ?headers: headers, ?broker: broker_name | String, ?raw: bool) -> DeliveryReport
|
|
130
|
+
def publish_dead_letter: (String topic, Envelope envelope, Exception error, ?broker: broker_name) -> DeliveryReport
|
|
131
|
+
def publish_raw: (String topic, untyped payload, untyped key, Hash[String, untyped] headers, ?broker: broker_name) -> DeliveryReport
|
|
132
|
+
def topic_exists?: (String topic, ?broker: broker_name) -> bool
|
|
133
|
+
def shutdown: () -> self
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
module Topics
|
|
137
|
+
def self.dead_letter: (String topic, String group) -> String
|
|
138
|
+
def self.recovery: (String topic, String group) -> String
|
|
139
|
+
def self.recovery_group: (String group) -> String
|
|
140
|
+
def self.reconsume_group: (String group) -> String
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def self.configure: (**untyped) ?{ (Configuration) -> void } -> singleton(EhMessaging)
|
|
144
|
+
def self.configuration: () -> Configuration
|
|
145
|
+
def self.publish: (String topic, event: String, application_name: String, component: String, correlation_id: String, version: String, partition_key: untyped, payload: payload, ?headers: headers, ?broker: broker_name | String, ?raw: bool) -> DeliveryReport
|
|
146
|
+
def self.subscribe: (untyped handler) -> Subscriber
|
|
147
|
+
def self.reconsume: (untyped handler, **reconsume_options) -> untyped
|
|
148
|
+
def self.boot: () -> singleton(EhMessaging)
|
|
149
|
+
def self.run: () -> untyped
|
|
150
|
+
def self.shutdown: () -> untyped
|
|
151
|
+
def self.reset!: () -> untyped
|
|
152
|
+
|
|
153
|
+
class Subscriber
|
|
154
|
+
attr_reader subscriptions: Array[untyped]
|
|
155
|
+
|
|
156
|
+
def initialize: (Configuration configuration, ?consumer_factory: untyped, ?producer: Publisher?, ?logger: untyped) -> void
|
|
157
|
+
def subscribe: (untyped handler) -> self
|
|
158
|
+
def boot: () -> self
|
|
159
|
+
def reconsume: (untyped handler, ?until_time: Time?, ?partitions: Hash[Integer, Integer]?, ?group: String?) -> untyped
|
|
160
|
+
def run: () -> untyped
|
|
161
|
+
def shutdown: () -> self
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
module EhMessagingPublicApiTypecheck
|
|
166
|
+
def self.configure_and_publish: () -> EhMessaging::DeliveryReport
|
|
167
|
+
def self.envelope_and_topics: (EhMessaging::Envelope) -> String
|
|
168
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: eh_messaging
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Diego E
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: logger
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.6'
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '2.0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: '1.6'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '2.0'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: opentelemetry-api
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '1.3'
|
|
39
|
+
- - "<"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '2.0'
|
|
42
|
+
type: :runtime
|
|
43
|
+
prerelease: false
|
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '1.3'
|
|
49
|
+
- - "<"
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '2.0'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: rdkafka
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - "~>"
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: 0.29.0
|
|
59
|
+
type: :runtime
|
|
60
|
+
prerelease: false
|
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - "~>"
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: 0.29.0
|
|
66
|
+
- !ruby/object:Gem::Dependency
|
|
67
|
+
name: rake
|
|
68
|
+
requirement: !ruby/object:Gem::Requirement
|
|
69
|
+
requirements:
|
|
70
|
+
- - "~>"
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: '13.0'
|
|
73
|
+
type: :development
|
|
74
|
+
prerelease: false
|
|
75
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - "~>"
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '13.0'
|
|
80
|
+
- !ruby/object:Gem::Dependency
|
|
81
|
+
name: rspec
|
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - "~>"
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '3.0'
|
|
87
|
+
type: :development
|
|
88
|
+
prerelease: false
|
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
90
|
+
requirements:
|
|
91
|
+
- - "~>"
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '3.0'
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
95
|
+
name: rbs
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - "~>"
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '4.2'
|
|
101
|
+
type: :development
|
|
102
|
+
prerelease: false
|
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
104
|
+
requirements:
|
|
105
|
+
- - "~>"
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: '4.2'
|
|
108
|
+
- !ruby/object:Gem::Dependency
|
|
109
|
+
name: standard
|
|
110
|
+
requirement: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - "~>"
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '1.43'
|
|
115
|
+
type: :development
|
|
116
|
+
prerelease: false
|
|
117
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
118
|
+
requirements:
|
|
119
|
+
- - "~>"
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: '1.43'
|
|
122
|
+
- !ruby/object:Gem::Dependency
|
|
123
|
+
name: steep
|
|
124
|
+
requirement: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - "~>"
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '2.1'
|
|
129
|
+
type: :development
|
|
130
|
+
prerelease: false
|
|
131
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - "~>"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '2.1'
|
|
136
|
+
description: A Ruby library for producing and consuming messages on Azure Event Hubs
|
|
137
|
+
using its Kafka-compatible endpoint
|
|
138
|
+
executables: []
|
|
139
|
+
extensions: []
|
|
140
|
+
extra_rdoc_files: []
|
|
141
|
+
files:
|
|
142
|
+
- eh_messaging.gemspec
|
|
143
|
+
- lib/eh_messaging.rb
|
|
144
|
+
- lib/eh_messaging/audit_logger.rb
|
|
145
|
+
- lib/eh_messaging/client.rb
|
|
146
|
+
- lib/eh_messaging/configuration.rb
|
|
147
|
+
- lib/eh_messaging/dead_letter_router.rb
|
|
148
|
+
- lib/eh_messaging/envelope.rb
|
|
149
|
+
- lib/eh_messaging/publisher.rb
|
|
150
|
+
- lib/eh_messaging/recoverable_error.rb
|
|
151
|
+
- lib/eh_messaging/subscriber.rb
|
|
152
|
+
- lib/eh_messaging/subscriber_metadata.rb
|
|
153
|
+
- lib/eh_messaging/subscriber_polling.rb
|
|
154
|
+
- lib/eh_messaging/telemetry.rb
|
|
155
|
+
- lib/eh_messaging/topics.rb
|
|
156
|
+
- lib/eh_messaging/version.rb
|
|
157
|
+
- sig/eh_messaging.rbs
|
|
158
|
+
licenses: []
|
|
159
|
+
metadata: {}
|
|
160
|
+
rdoc_options: []
|
|
161
|
+
require_paths:
|
|
162
|
+
- lib
|
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
|
+
requirements:
|
|
165
|
+
- - ">="
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
version: 3.4.0
|
|
168
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - ">="
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '0'
|
|
173
|
+
requirements: []
|
|
174
|
+
rubygems_version: 3.6.9
|
|
175
|
+
specification_version: 4
|
|
176
|
+
summary: Ruby library for Azure Event Hubs over the Kafka-compatible protocol
|
|
177
|
+
test_files: []
|