Module: Rubyists::Leopard::NatsApiServer::ClassMethods

Defined in:
lib/leopard/nats_api_server.rb

Instance Method Summary collapse

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

#endpointsObject



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

#groupsObject



28
# File 'lib/leopard/nats_api_server.rb', line 28

def groups = @groups ||= {}

#middlewareObject



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