Sha256: 04287ebaed4278a4be37d710c5c3b2547e81ec1dc1b0ab192f9a1234270c81b6

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Messaging
  # @private
  # @deprecated
  class BaseHandler
    class << self
      def only_messages(messages = nil)
        @only_messages = Array(messages) if messages
        @only_messages || []
      end
      alias only_message only_messages

      def group_id(group_id = nil)
        @group_id = group_id if group_id
        @group_id || default_group_id
      end

      def default_group_id
        Config.app_name + '-' + name.underscore
      end

      def call(message)
        return unless allowed_message?(message.class)

        new.on_message(message, nil)
      end

      def listen_on(topic:)
        topics = Array(topic).map(&:to_s)
        Messaging.routes.consumer(name, group_id: group_id) do |c|
          topics.each { |t| c.on(/.*/, topic: t, call: self) }
        end
      end

      def allowed_message?(message_class)
        return true if only_messages.empty?

        only_messages.include? message_class
      end
    end

    def on_message(message, _metadata); end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
messaging-3.4.1 lib/messaging/base_handler.rb