Sha256: f5ad3d43d040fbcefa3f7b7a58a3f430eb4729a124b37136b307eec23e51bc1a

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

# Copyright 2008-2012 Red Hat, Inc, and individual contributors.
# 
# This is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2.1 of
# the License, or (at your option) any later version.
# 
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# 
# You should have received a copy of the GNU Lesser General Public
# License along with this software; if not, write to the Free
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.

require 'torquebox/messaging/message_processor'
require 'torquebox/messaging/const_missing'
require 'torquebox/messaging/future_responder'

module TorqueBox
  module Messaging
    class BackgroundableProcessor < MessageProcessor

      def on_message(hash)
        FutureResponder.new( Queue.new( hash[:future_queue] ), hash[:future_id] ).respond do
          # TORQUE-741 allow always_background methods to report as background tasks in NewRelic
          begin
            if TorqueBox::Messaging::Backgroundable::NEWRELIC_AVAILABLE
              class << hash[:receiver]
                include NewRelic::Agent::Instrumentation::ControllerInstrumentation
                add_transaction_tracer hash[:method], :name => hash[:method].sub("__sync_", ""), :category => :task
              end
            end
          rescue
            log.error "Error loading New Relic for backgrouded process #{hash[:method]}"
          end
          hash[:receiver].send(hash[:method], *hash[:args])
        end
      end

      private
      def log
        @logger ||= TorqueBox::Logger.new(self.class)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
torquebox-messaging-2.0.1-java lib/torquebox/messaging/backgroundable_processor.rb
torquebox-messaging-2.0.0-java lib/torquebox/messaging/backgroundable_processor.rb