Sha256: aabc4e9dcf774c5b4d19aac93aa366b8d6384dc30518515559ffaedc9362a667

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

require 'carrot'
module Solrizer
  module Rabbit
    class QueueIndexWorker
      def initialize
        Thread.current[:carrot] = Carrot.new()#:host=>'mediashelf.eu')
        @q = Carrot.queue(Solrizer::Rabbit.queue_name)

        @buff = BufferedIndexer.new(ActiveFedora::SolrService.instance.conn)
        @stopped = false
      end

      def stop
        puts "finishing writes"
        @stopped=true
      end

      def run
        indexer = Solrizer::Fedora::Indexer.new
        while !@stopped && msg = @q.pop
          begin
            obj = Solrizer::Fedora::Repository.get_object(msg)
            solr_doc = indexer.create_document( obj )
            @buff.add(solr_doc)
          rescue RSolr::Error::Http, Errno::ECONNREFUSED => exception
            puts "Fatal #{exception.class}, exception see log"
            logger.fatal( "\n\n#{exception.class} (#{exception.message})\n\n")
            logger.flush if logger.respond_to? :flush #Rails logger is flushable, mediashelf-loggable isn't
            exit!
          rescue StandardError => exception
            puts "Caught #{exception.class}, while procesing `#{msg}` see log"
            logger.fatal( "\n\n#{exception.class} (#{exception.message}) while procesing `#{msg}`:\n    " + exception.backtrace.join("\n    ") + "\n\n")
            logger.flush if logger.respond_to? :flush #Rails logger is flushable, mediashelf-loggable isn't
          end
        end
        puts "flushing buffers"
        @buff.flush(true)
        Carrot.stop
        puts "done"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solrizer-rabbit-0.0.1 lib/solrizer-rabbit/queue_index_worker.rb