kubemq 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.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +30 -0
  3. data/LICENSE +201 -0
  4. data/README.md +237 -0
  5. data/lib/kubemq/base_client.rb +180 -0
  6. data/lib/kubemq/cancellation_token.rb +63 -0
  7. data/lib/kubemq/channel_info.rb +84 -0
  8. data/lib/kubemq/configuration.rb +247 -0
  9. data/lib/kubemq/cq/client.rb +446 -0
  10. data/lib/kubemq/cq/command_message.rb +59 -0
  11. data/lib/kubemq/cq/command_received.rb +52 -0
  12. data/lib/kubemq/cq/command_response.rb +44 -0
  13. data/lib/kubemq/cq/command_response_message.rb +58 -0
  14. data/lib/kubemq/cq/commands_subscription.rb +45 -0
  15. data/lib/kubemq/cq/queries_subscription.rb +45 -0
  16. data/lib/kubemq/cq/query_message.rb +70 -0
  17. data/lib/kubemq/cq/query_received.rb +52 -0
  18. data/lib/kubemq/cq/query_response.rb +59 -0
  19. data/lib/kubemq/cq/query_response_message.rb +67 -0
  20. data/lib/kubemq/error_codes.rb +181 -0
  21. data/lib/kubemq/errors/error_mapper.rb +134 -0
  22. data/lib/kubemq/errors.rb +276 -0
  23. data/lib/kubemq/interceptors/auth_interceptor.rb +78 -0
  24. data/lib/kubemq/interceptors/error_mapping_interceptor.rb +75 -0
  25. data/lib/kubemq/interceptors/metrics_interceptor.rb +95 -0
  26. data/lib/kubemq/interceptors/retry_interceptor.rb +119 -0
  27. data/lib/kubemq/proto/kubemq_pb.rb +43 -0
  28. data/lib/kubemq/proto/kubemq_services_pb.rb +35 -0
  29. data/lib/kubemq/pubsub/client.rb +475 -0
  30. data/lib/kubemq/pubsub/event_message.rb +52 -0
  31. data/lib/kubemq/pubsub/event_received.rb +48 -0
  32. data/lib/kubemq/pubsub/event_send_result.rb +31 -0
  33. data/lib/kubemq/pubsub/event_sender.rb +112 -0
  34. data/lib/kubemq/pubsub/event_store_message.rb +53 -0
  35. data/lib/kubemq/pubsub/event_store_received.rb +47 -0
  36. data/lib/kubemq/pubsub/event_store_result.rb +33 -0
  37. data/lib/kubemq/pubsub/event_store_sender.rb +164 -0
  38. data/lib/kubemq/pubsub/events_store_subscription.rb +81 -0
  39. data/lib/kubemq/pubsub/events_subscription.rb +43 -0
  40. data/lib/kubemq/queues/client.rb +366 -0
  41. data/lib/kubemq/queues/downstream_receiver.rb +247 -0
  42. data/lib/kubemq/queues/queue_message.rb +99 -0
  43. data/lib/kubemq/queues/queue_message_received.rb +148 -0
  44. data/lib/kubemq/queues/queue_poll_request.rb +77 -0
  45. data/lib/kubemq/queues/queue_poll_response.rb +138 -0
  46. data/lib/kubemq/queues/queue_send_result.rb +49 -0
  47. data/lib/kubemq/queues/upstream_sender.rb +180 -0
  48. data/lib/kubemq/server_info.rb +57 -0
  49. data/lib/kubemq/subscription.rb +98 -0
  50. data/lib/kubemq/telemetry/otel.rb +64 -0
  51. data/lib/kubemq/telemetry/semconv.rb +51 -0
  52. data/lib/kubemq/transport/channel_manager.rb +212 -0
  53. data/lib/kubemq/transport/converter.rb +287 -0
  54. data/lib/kubemq/transport/grpc_transport.rb +411 -0
  55. data/lib/kubemq/transport/message_buffer.rb +105 -0
  56. data/lib/kubemq/transport/reconnect_manager.rb +111 -0
  57. data/lib/kubemq/transport/state_machine.rb +150 -0
  58. data/lib/kubemq/types.rb +80 -0
  59. data/lib/kubemq/validation/validator.rb +216 -0
  60. data/lib/kubemq/version.rb +6 -0
  61. data/lib/kubemq.rb +118 -0
  62. metadata +138 -0
data/lib/kubemq.rb ADDED
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'kubemq/version'
4
+ require_relative 'kubemq/error_codes'
5
+ require_relative 'kubemq/errors'
6
+ require_relative 'kubemq/errors/error_mapper'
7
+ require_relative 'kubemq/types'
8
+ require_relative 'kubemq/configuration'
9
+ require_relative 'kubemq/server_info'
10
+ require_relative 'kubemq/channel_info'
11
+ require_relative 'kubemq/telemetry/semconv'
12
+ require_relative 'kubemq/telemetry/otel'
13
+ require_relative 'kubemq/cancellation_token'
14
+ require_relative 'kubemq/subscription'
15
+ require_relative 'kubemq/validation/validator'
16
+ require_relative 'kubemq/transport/state_machine'
17
+ require_relative 'kubemq/transport/message_buffer'
18
+ require_relative 'kubemq/transport/reconnect_manager'
19
+ require_relative 'kubemq/transport/converter'
20
+ require_relative 'kubemq/interceptors/auth_interceptor'
21
+ require_relative 'kubemq/interceptors/metrics_interceptor'
22
+ require_relative 'kubemq/interceptors/retry_interceptor'
23
+ require_relative 'kubemq/interceptors/error_mapping_interceptor'
24
+ require_relative 'kubemq/transport/grpc_transport'
25
+ require_relative 'kubemq/transport/channel_manager'
26
+ require_relative 'kubemq/base_client'
27
+
28
+ # PubSub
29
+ require_relative 'kubemq/pubsub/event_message'
30
+ require_relative 'kubemq/pubsub/event_send_result'
31
+ require_relative 'kubemq/pubsub/event_received'
32
+ require_relative 'kubemq/pubsub/event_store_message'
33
+ require_relative 'kubemq/pubsub/event_store_result'
34
+ require_relative 'kubemq/pubsub/event_store_received'
35
+ require_relative 'kubemq/pubsub/events_subscription'
36
+ require_relative 'kubemq/pubsub/events_store_subscription'
37
+ require_relative 'kubemq/pubsub/event_sender'
38
+ require_relative 'kubemq/pubsub/event_store_sender'
39
+ require_relative 'kubemq/pubsub/client'
40
+
41
+ # Queues
42
+ require_relative 'kubemq/queues/queue_message'
43
+ require_relative 'kubemq/queues/queue_message_received'
44
+ require_relative 'kubemq/queues/queue_send_result'
45
+ require_relative 'kubemq/queues/queue_poll_request'
46
+ require_relative 'kubemq/queues/queue_poll_response'
47
+ require_relative 'kubemq/queues/upstream_sender'
48
+ require_relative 'kubemq/queues/downstream_receiver'
49
+ require_relative 'kubemq/queues/client'
50
+
51
+ # CQ (Commands + Queries)
52
+ require_relative 'kubemq/cq/command_message'
53
+ require_relative 'kubemq/cq/command_received'
54
+ require_relative 'kubemq/cq/command_response'
55
+ require_relative 'kubemq/cq/command_response_message'
56
+ require_relative 'kubemq/cq/commands_subscription'
57
+ require_relative 'kubemq/cq/query_message'
58
+ require_relative 'kubemq/cq/query_received'
59
+ require_relative 'kubemq/cq/query_response'
60
+ require_relative 'kubemq/cq/query_response_message'
61
+ require_relative 'kubemq/cq/queries_subscription'
62
+ require_relative 'kubemq/cq/client'
63
+
64
+ # KubeMQ Ruby SDK — official client library for KubeMQ message broker.
65
+ #
66
+ # Provides pub/sub events, durable events store, message queues (stream and
67
+ # simple APIs), and request/reply commands and queries over gRPC.
68
+ #
69
+ # Configure globally or pass options directly to client constructors.
70
+ #
71
+ # @example Global configuration
72
+ # KubeMQ.configure do |c|
73
+ # c.address = "kubemq.example.com:50000"
74
+ # c.auth_token = ENV["KUBEMQ_AUTH_TOKEN"]
75
+ # end
76
+ #
77
+ # client = KubeMQ::PubSubClient.new
78
+ #
79
+ # @example Per-client configuration
80
+ # client = KubeMQ::QueuesClient.new(address: "localhost:50000", client_id: "worker-1")
81
+ #
82
+ # @see KubeMQ::Configuration
83
+ # @see KubeMQ::PubSubClient
84
+ # @see KubeMQ::QueuesClient
85
+ # @see KubeMQ::CQClient
86
+ module KubeMQ
87
+ # Yields the global {Configuration} instance for modification.
88
+ #
89
+ # Settings applied here act as defaults for any client created without
90
+ # explicit constructor arguments. Constructor arguments take precedence.
91
+ #
92
+ # @yield [config] the global configuration instance
93
+ # @yieldparam config [Configuration] mutable configuration object
94
+ # @return [void]
95
+ #
96
+ # @example
97
+ # KubeMQ.configure do |c|
98
+ # c.address = "broker.example.com:50000"
99
+ # c.reconnect_policy.max_delay = 60.0
100
+ # end
101
+ def self.configure
102
+ yield(configuration)
103
+ end
104
+
105
+ # Returns the global {Configuration} singleton, creating it on first access.
106
+ #
107
+ # @return [Configuration] the current global configuration
108
+ def self.configuration
109
+ @configuration ||= Configuration.new
110
+ end
111
+
112
+ # Resets the global configuration to a fresh {Configuration} with defaults.
113
+ #
114
+ # @return [Configuration] the new default configuration
115
+ def self.reset_configuration!
116
+ @configuration = Configuration.new
117
+ end
118
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kubemq
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - KubeMQ
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: google-protobuf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: grpc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.65'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.65'
41
+ description: Official Ruby SDK for KubeMQ message broker. Supports Events, Events
42
+ Store, Queues, Commands, and Queries.
43
+ email:
44
+ - support@kubemq.io
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - CHANGELOG.md
50
+ - LICENSE
51
+ - README.md
52
+ - lib/kubemq.rb
53
+ - lib/kubemq/base_client.rb
54
+ - lib/kubemq/cancellation_token.rb
55
+ - lib/kubemq/channel_info.rb
56
+ - lib/kubemq/configuration.rb
57
+ - lib/kubemq/cq/client.rb
58
+ - lib/kubemq/cq/command_message.rb
59
+ - lib/kubemq/cq/command_received.rb
60
+ - lib/kubemq/cq/command_response.rb
61
+ - lib/kubemq/cq/command_response_message.rb
62
+ - lib/kubemq/cq/commands_subscription.rb
63
+ - lib/kubemq/cq/queries_subscription.rb
64
+ - lib/kubemq/cq/query_message.rb
65
+ - lib/kubemq/cq/query_received.rb
66
+ - lib/kubemq/cq/query_response.rb
67
+ - lib/kubemq/cq/query_response_message.rb
68
+ - lib/kubemq/error_codes.rb
69
+ - lib/kubemq/errors.rb
70
+ - lib/kubemq/errors/error_mapper.rb
71
+ - lib/kubemq/interceptors/auth_interceptor.rb
72
+ - lib/kubemq/interceptors/error_mapping_interceptor.rb
73
+ - lib/kubemq/interceptors/metrics_interceptor.rb
74
+ - lib/kubemq/interceptors/retry_interceptor.rb
75
+ - lib/kubemq/proto/kubemq_pb.rb
76
+ - lib/kubemq/proto/kubemq_services_pb.rb
77
+ - lib/kubemq/pubsub/client.rb
78
+ - lib/kubemq/pubsub/event_message.rb
79
+ - lib/kubemq/pubsub/event_received.rb
80
+ - lib/kubemq/pubsub/event_send_result.rb
81
+ - lib/kubemq/pubsub/event_sender.rb
82
+ - lib/kubemq/pubsub/event_store_message.rb
83
+ - lib/kubemq/pubsub/event_store_received.rb
84
+ - lib/kubemq/pubsub/event_store_result.rb
85
+ - lib/kubemq/pubsub/event_store_sender.rb
86
+ - lib/kubemq/pubsub/events_store_subscription.rb
87
+ - lib/kubemq/pubsub/events_subscription.rb
88
+ - lib/kubemq/queues/client.rb
89
+ - lib/kubemq/queues/downstream_receiver.rb
90
+ - lib/kubemq/queues/queue_message.rb
91
+ - lib/kubemq/queues/queue_message_received.rb
92
+ - lib/kubemq/queues/queue_poll_request.rb
93
+ - lib/kubemq/queues/queue_poll_response.rb
94
+ - lib/kubemq/queues/queue_send_result.rb
95
+ - lib/kubemq/queues/upstream_sender.rb
96
+ - lib/kubemq/server_info.rb
97
+ - lib/kubemq/subscription.rb
98
+ - lib/kubemq/telemetry/otel.rb
99
+ - lib/kubemq/telemetry/semconv.rb
100
+ - lib/kubemq/transport/channel_manager.rb
101
+ - lib/kubemq/transport/converter.rb
102
+ - lib/kubemq/transport/grpc_transport.rb
103
+ - lib/kubemq/transport/message_buffer.rb
104
+ - lib/kubemq/transport/reconnect_manager.rb
105
+ - lib/kubemq/transport/state_machine.rb
106
+ - lib/kubemq/types.rb
107
+ - lib/kubemq/validation/validator.rb
108
+ - lib/kubemq/version.rb
109
+ homepage: https://github.com/kubemq-io/kubemq-ruby
110
+ licenses:
111
+ - Apache-2.0
112
+ metadata:
113
+ homepage_uri: https://github.com/kubemq-io/kubemq-ruby
114
+ source_code_uri: https://github.com/kubemq-io/kubemq-ruby
115
+ changelog_uri: https://github.com/kubemq-io/kubemq-ruby/blob/main/CHANGELOG.md
116
+ documentation_uri: https://www.rubydoc.info/gems/kubemq
117
+ bug_tracker_uri: https://github.com/kubemq-io/kubemq-ruby/issues
118
+ rubygems_mfa_required: 'true'
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '3.1'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubygems_version: 3.0.3.1
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: KubeMQ Ruby SDK - Message Queue Client
138
+ test_files: []