Sha256: 9f5013201dc8bf7153fbe54a99e95fc7766da10d1a7de601dc1ace100baa9b57

Contents?: true

Size: 985 Bytes

Versions: 10

Compression:

Stored size: 985 Bytes

Contents

# frozen_string_literal: true

# Base class for a request (command and query) processor with DSL magic.
#
# Usage:
#   class HelloProcessor < BasicRequestProcessor
#     queue "hello"
#
#     def world
#      puts "hello/world called with the message: #{message}"
#     end
#   end
#
#
class BasicRequestProcessor
  attr_reader :message

  def initialize(message, _opts = {})
    @message = message
  end

  def self.call_command(method_name, message, opts)
    new(message, opts).send(method_name.to_sym)
  end

  def self.call_query(method_name, message, opts)
    result = new(message, opts).send(method_name.to_sym)
    return result if result.is_a?(Hash)

    raise "#{name}##{method_name}() is expected to return a Hash, but returned #{result.class}"
  end

  # Subclass exposes itself by declaring the queue that is used to accept requests
  #
  def self.queue(queue_name)
    Mimi::Messaging.register_request_processor(queue_name, self)
  end
end # class BasicRequestProcessor

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mimi-messaging-1.2.8 examples/basic_request_processor.rb
mimi-messaging-1.2.7 examples/basic_request_processor.rb
mimi-messaging-1.2.6 examples/basic_request_processor.rb
mimi-messaging-1.2.5 examples/basic_request_processor.rb
mimi-messaging-1.2.4 examples/basic_request_processor.rb
mimi-messaging-1.2.2 examples/basic_request_processor.rb
mimi-messaging-1.2.1 examples/basic_request_processor.rb
mimi-messaging-1.1.1 examples/basic_request_processor.rb
mimi-messaging-1.1.0 examples/basic_request_processor.rb
mimi-messaging-1.0.0 examples/basic_request_processor.rb