class Sqreen::Ecosystem::Messaging::Sqs
Public Instance Methods
setup()
click to toggle source
# File lib/sqreen/ecosystem/messaging/sqs.rb, line 20 def setup advice_send = wrap_for_interest(ModuleApi::Tracing::ProducerData, &method(:after_send_advice)) advice_receive = wrap_for_interest(ModuleApi::Tracing::ConsumerData, &method(:after_receive_advice)) instrument 'Aws::SQS::Client#send_message', after: advice_send instrument 'Aws::SQS::Client#send_message_batch', after: advice_send instrument 'Aws::SQS::Client#receive_message', after: advice_receive end
Private Instance Methods
after_receive_advice(call, _ball)
click to toggle source
@param [Sqreen::Graft::CallbackCall] call
# File lib/sqreen/ecosystem/messaging/sqs.rb, line 42 def after_receive_advice(call, _ball) return if call.raised unless call.args.length > 0 && call.args[0].is_a?(Hash) logger.info "Unexpected arguments to receive_message" return end create_signal(call.args, ModuleApi::Tracing::ConsumerData) end
after_send_advice(call, _ball)
click to toggle source
@param [Sqreen::Graft::CallbackCall] call
# File lib/sqreen/ecosystem/messaging/sqs.rb, line 31 def after_send_advice(call, _ball) return if call.raised unless call.args.length > 0 && call.args[0].is_a?(Hash) logger.info "Unexpected arguments to send_message(_batch)" return end create_signal(call.args, ModuleApi::Tracing::ProducerData) end
create_signal(args, clazz)
click to toggle source
# File lib/sqreen/ecosystem/messaging/sqs.rb, line 52 def create_signal(args, clazz) hash = args[0] queue_url = hash[:queue_url] || hash['queue_url'] return unless queue_url begin uri = URI.parse(queue_url) rescue URI::InvalidURIError logger.info { "Invalid URI: #{uri}" } return end clazz.new( message_type: :'aws-sqs', host: uri.host, topic: ($1 if uri.path =~ /\A\/queue\/(?:[^\/]+\/)?([^\/]+)\z/), ) end