Module: LontaraUtilities::RMQ::Server

Defined in:
lib/lontara_utilities/rmq/server.rb,
lib/lontara_utilities/rmq/server/subscriber.rb,
lib/lontara_utilities/rmq/server/rpc_consumer.rb

Overview

Base module for RMQ server.

Defined Under Namespace

Classes: RPCConsumer, Subscriber

Class Method Summary collapse

Class Method Details

.start(url:, queue:, server: 'RPCConsumer', **options) ⇒ Object

Server interface for RMQ Publisher or RPC Publisher.

Start server by giving url and queue name. Parameter server must be ‘RPCConsumer` or `Subscriber`. If parameter not defined, default is `RPCConsumer`.

**Use ‘Subscriber` if no need to reply the request’s responses.**

Options params is: ‘default_exchange: (default: true)`

That option is changing the way Connection object is created. If set to ‘false`, connection object didn’t create exchange, also connection.exchange property will be ‘nil`.

These options only applicable if ‘default_exchange` is `false`, and `server` is `RPCConsumer` (exchange created inside consumer).

- `exchange:`
- `exchange_type: (default: :direct)`

Be aware of this conditions:

  • Don’t leave ‘exchange` where `default_exchange` is `false`, or Server object will raise error.



27
28
29
30
31
32
33
34
35
36
# File 'lib/lontara_utilities/rmq/server.rb', line 27

def start(url:, queue:, server: 'RPCConsumer', **options)
  parameter_validator(server, options)

  server = Object.const_get("LontaraUtilities::RMQ::Server::#{server}")
  server_opts = %i[exchange exchange_type]

  connection = Connection.new(url:, **options.except(*server_opts))

  server.new(connection, queue:, **options.slice(*server_opts)).start
end