class LogStash::Inputs::Beanstalk

Public Class Methods

new(url, type, config={}, &block) click to toggle source
Calls superclass method LogStash::Inputs::Base::new
# File lib/logstash/inputs/beanstalk.rb, line 7
def initialize(url, type, config={}, &block)
  super

  if @url.path == "" or @url.path == "/"
    raise "must specify a tube for beanstalk output"
  end
end

Public Instance Methods

register() click to toggle source
# File lib/logstash/inputs/beanstalk.rb, line 16
def register
  tube = @url.path[1..-1] # Skip leading '/'
  port = @url.port || 11300
  @beanstalk = EMJack::Connection.new(:host => @url.host,
                                      :port => port,
                                      :tube => tube)
  @beanstalk.each_job do |job|
    begin
      event = LogStash::Event.from_json(job.body)
    rescue => e
      @logger.warn(["Trouble parsing beanstalk job",
                   {:error => e.message, :body => job.body,
                    :backtrace => e.backtrace}])
      @beanstalk.bury(job, 0)
    end

    receive(event)
    @beanstalk.delete(job)
  end # @beanstalk.each_job
end