Module: Rubyists::Leopard::NatsApiServer::ClassMethods
- Defined in:
- lib/leopard/nats_api_server.rb
Instance Method Summary collapse
-
#endpoint(name, subject: nil, queue: nil, group: nil, &handler) ⇒ void
Define an endpoint for the NATS API server.
- #endpoints ⇒ Object
-
#group(name, group: nil, queue: nil) ⇒ void
Define a group for organizing endpoints.
- #groups ⇒ Object
- #middleware ⇒ Object
-
#run(nats_url:, service_opts:, instances: 1, blocking: true) ⇒ void
Start the NATS API server.
-
#use(klass, *args, &block) ⇒ void
Use a middleware class for processing messages.
Instance Method Details
#endpoint(name, subject: nil, queue: nil, group: nil, &handler) ⇒ void
This method returns an undefined value.
Define an endpoint for the NATS API server.
40 41 42 |
# File 'lib/leopard/nats_api_server.rb', line 40 def endpoint(name, subject: nil, queue: nil, group: nil, &handler) endpoints << Endpoint.new(name:, subject: subject || name, queue:, group:, handler:) end |
#endpoints ⇒ Object
27 |
# File 'lib/leopard/nats_api_server.rb', line 27 def endpoints = @endpoints ||= [] |
#group(name, group: nil, queue: nil) ⇒ void
This method returns an undefined value.
Define a group for organizing endpoints.
51 52 53 |
# File 'lib/leopard/nats_api_server.rb', line 51 def group(name, group: nil, queue: nil) groups[name] = { name:, parent: group, queue: } end |
#groups ⇒ Object
28 |
# File 'lib/leopard/nats_api_server.rb', line 28 def groups = @groups ||= {} |
#middleware ⇒ Object
29 |
# File 'lib/leopard/nats_api_server.rb', line 29 def middleware = @middleware ||= [] |
#run(nats_url:, service_opts:, instances: 1, blocking: true) ⇒ void
This method returns an undefined value.
Start the NATS API server. This method connects to the NATS server and spawns multiple instances of the API server.
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/leopard/nats_api_server.rb', line 75 def run(nats_url:, service_opts:, instances: 1, blocking: true) logger.info 'Booting NATS API server...' workers = Concurrent::Array.new pool = spawn_instances(nats_url, service_opts, instances, workers, blocking) logger.info 'Setting up signal trap...' trap_signals(workers, pool) return pool unless blocking sleep end |
#use(klass, *args, &block) ⇒ void
This method returns an undefined value.
Use a middleware class for processing messages.
62 63 64 |
# File 'lib/leopard/nats_api_server.rb', line 62 def use(klass, *args, &block) middleware << [klass, args, block] end |