Module: Rubyists::Leopard::NatsApiServer::ClassMethods
- Includes:
- MetricsServer
- 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.
43 44 45 |
# File 'lib/leopard/nats_api_server.rb', line 43 def endpoint(name, subject: nil, queue: nil, group: nil, &handler) endpoints << Endpoint.new(name:, subject: subject || name, queue:, group:, handler:) end |
#endpoints ⇒ Object
30 |
# File 'lib/leopard/nats_api_server.rb', line 30 def endpoints = @endpoints ||= [] |
#group(name, group: nil, queue: nil) ⇒ void
This method returns an undefined value.
Define a group for organizing endpoints.
54 55 56 |
# File 'lib/leopard/nats_api_server.rb', line 54 def group(name, group: nil, queue: nil) groups[name] = { name:, parent: group, queue: } end |
#groups ⇒ Object
31 |
# File 'lib/leopard/nats_api_server.rb', line 31 def groups = @groups ||= {} |
#middleware ⇒ Object
32 |
# File 'lib/leopard/nats_api_server.rb', line 32 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.
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/leopard/nats_api_server.rb', line 78 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) start_metrics_server(workers) if ENV['LEOPARD_METRICS_PORT'] return pool unless blocking sleep end |
#use(klass, *args, &block) ⇒ void
This method returns an undefined value.
Use a middleware class for processing messages.
65 66 67 |
# File 'lib/leopard/nats_api_server.rb', line 65 def use(klass, *args, &block) middleware << [klass, args, block] end |