Sha256: 9cb6e1ce2bcd5efbfeda2efc7d8bcdbfd4e7df4a145d43acbf2f850e97634d08

Contents?: true

Size: 1.11 KB

Versions: 8

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require 'bunny'

module Totoro
  class BaseQueue
    class <<self
      def config
        @config ||= Totoro::Config.new
      end

      def connection
        @connection ||= Bunny.new(config.connect.merge(threaded: false))
      end

      def broadcast(id, payload)
        Totoro::BroadcastService.new(connection, config).broadcast(id, payload)
      rescue Totoro::ConnectionBreakError => error
        handle_failed_msg(id, payload, error, :broadcast)
      end

      def enqueue(id, payload)
        Totoro::EnqueueService.new(connection, config).enqueue(id, payload)
      rescue Totoro::ConnectionBreakError => error
        handle_failed_msg(id, payload, error, :enqueue)
      end

      private

      def handle_failed_msg(id, payload, error, group)
        Rails.logger.error error.message
        Rails.logger.info 'Add failed message to resend list'
        STDOUT.flush
        @connection = nil
        Totoro::TotoroFailedMessage.create(
          class_name: to_s,
          queue_id: id,
          group: group,
          payload: payload
        )
      end
    end
  end
end

Version data entries

8 entries across 7 versions & 1 rubygems

Version Path
totoro-1.0.6 pkg/totoro-1.0.5/lib/totoro/base_queue.rb
totoro-1.0.6 lib/totoro/base_queue.rb
totoro-1.0.5 lib/totoro/base_queue.rb
totoro-1.0.4 lib/totoro/base_queue.rb
totoro-1.0.3 lib/totoro/base_queue.rb
totoro-1.0.2 lib/totoro/base_queue.rb
totoro-1.0.1 lib/totoro/base_queue.rb
totoro-1.0.0 lib/totoro/base_queue.rb