Sha256: 1ed0df1806916df82c84c806c044feae0736a0082f87e978a4883e2ecce3766b

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

# This is a rudementary queue service that uses file system instead of
# AWS::SQS or SimpleQueue. It addresses SimpleQueue's inability to be used
# by only one application instance while avoiding the cost of setting up AWS::SQS.
# This is ideal to be used in development mode between multiple applications.
module DispatchRider
  module QueueServices
    require "dispatch-rider/queue_services/file_system/queue"
    class FileSystem < Base
      def assign_storage(attrs)
        begin
          path = attrs.fetch(:path)
          Queue.new(path)
        rescue IndexError
          raise RecordInvalid.new(self, ["Path can not be blank"])
        end
      end

      def insert(item)
        queue.add item
      end

      def raw_head
        queue.pop
      end
      
      def received_message_for(raw_item)
         FsReceivedMessage.new(construct_message_from(raw_item), raw_item, queue)
      end

      def construct_message_from(item)
        deserialize(item.read)
      end
      
      def put_back(item)
        queue.put_back(item)
      end

      def delete(item)
        queue.remove item
      end

      def size
        queue.size
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dispatch-rider-1.1.6 lib/dispatch-rider/queue_services/file_system.rb
dispatch-rider-1.1.5 lib/dispatch-rider/queue_services/file_system.rb
dispatch-rider-1.1.4 lib/dispatch-rider/queue_services/file_system.rb