Sha256: 48399f23d4e48ba9926100f3cb4c525d7093feb8e76ea069769acf0dd2527478

Contents?: true

Size: 1.17 KB

Versions: 20

Compression:

Stored size: 1.17 KB

Contents

module DispatchRider
  module Handlers
    class Base
      include NamedProcess
      extend InheritanceTracking
      
      class << self
        def set_default_retry( amount ) 
          define_method(:retry_timeout) do
            amount
          end
        end
      end
      
      attr_reader :raw_message

      def do_process(raw_message)
        with_named_process(self.class.name) do
          @raw_message = raw_message
          process(raw_message.body)
        end
      rescue Exception => e
        self.retry if self.retry_on_failure?
        raise e
      end

      def process(message)
        raise NotImplementedError, "Method 'process' not overridden in subclass!"
      end
      
      protected
      
      def extend_timeout(timeout)
        raw_message.extend_timeout(timeout)
      end
      
      def return_to_queue
        raw_message.return_to_queue
      end
      
      def retry
        timeout = retry_timeout
        case timeout
        when :immediate
          return_to_queue
        else
          extend_timeout(timeout)
        end
      end
      
      def retry_on_failure?
        self.respond_to? :retry_timeout
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
dispatch-rider-1.3.3 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.3.2 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.3.1 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.3.0 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.11 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.10 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.9 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.8 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.7 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.6 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.5 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.4 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.3 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.2 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.1 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.2.0 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.1.7 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.1.6 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.1.5 lib/dispatch-rider/handlers/base.rb
dispatch-rider-1.1.4 lib/dispatch-rider/handlers/base.rb