class Basquiat::Adapters::RabbitMq::DeadLettering
Attributes
options[R]
Public Class Methods
new(session)
click to toggle source
Calls superclass method
Basquiat::Adapters::RabbitMq::BaseStrategy::new
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 28 def initialize(session) super setup_dead_lettering end
session_options()
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 23 def session_options options.fetch :session end
setup(opts)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 10 def setup(opts) @options = { session: { queue: { options: { 'x-dead-letter-exchange' => opts.fetch(:exchange, 'basquiat.dlx') } } }, dlx: { ttl: opts.fetch(:ttl, 1_000) } } end
Public Instance Methods
run(message) { || ... }
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 33 def run(message) catch :skip_processing do check_incoming_messages(message.props.headers) yield end public_send(message.action, message) end
Private Instance Methods
check_incoming_messages(headers)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 43 def check_incoming_messages(headers) headers && headers['x-death'][1]['queue'] != session.queue.name && throw(:skip_processing) end
options()
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 49 def options self.class.options end
setup_dead_lettering()
click to toggle source
# File lib/basquiat/adapters/rabbitmq/requeue_strategies/dead_lettering.rb, line 53 def setup_dead_lettering dlx = session.channel.topic('basquiat.dlx') queue = session.channel.queue('basquiat.dlq', arguments: { 'x-dead-letter-exchange' => session.exchange.name, 'x-message-ttl' => options[:dlx][:ttl] }) queue.bind(dlx, routing_key: '#') end