Skip to content

Commit 73b90e4

Browse files
committed
Add support for specifying delayed queue options in advanced sneakers
1 parent 70aae88 commit 73b90e4

3 files changed

Lines changed: 8 additions & 4 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ AdvancedSneakersActiveJob.configure do |config|
175175
# Delayed queues can be filtered by this prefix (e.g. delayed:60 - queue for messages with 1 minute delay)
176176
config.delayed_queue_prefix = 'delayed'
177177

178+
# Delayed options can be customized (e.g. to remove 'x-queue-mode' => 'lazy' for Quorum queues)
179+
# Default: { 'x-queue-mode' => 'lazy' }
180+
# config.delayed_queue_options = {}
181+
178182
# Custom sneakers configuration for ActiveJob publisher & runner
179183
config.sneakers = {
180184
connection: Bunny.new('CUSTOM_URL', with: { other: 'options' }),

lib/advanced_sneakers_activejob/configuration.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class Configuration
1515
config_accessor(:activejob_workers_strategy) { :include } # [:include, :exclude, :only]
1616
config_accessor(:delay_proc) { ->(timestamp) { (timestamp - Time.now.to_f).round } } # seconds
1717
config_accessor(:delayed_queue_prefix) { 'delayed' }
18+
config_accessor(:delayed_queue_options) { { 'x-queue-mode' => 'lazy' } }
1819
config_accessor(:retry_delay_proc) { ->(count) { AdvancedSneakersActiveJob::EXPONENTIAL_BACKOFF[count] } } # seconds
1920
config_accessor(:log_level) { :info } # debug logs are too noizy because of Bunny
2021

lib/advanced_sneakers_activejob/delayed_publisher.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class DelayedPublisher < ::BunnyPublisher::Base
88

99
delegate :logger, to: :'::ActiveJob::Base'
1010

11-
delegate :name_prefix, :delayed_queue_prefix,
11+
delegate :name_prefix, :delayed_queue_prefix, :delayed_queue_options,
1212
to: :'AdvancedSneakersActiveJob.config',
1313
prefix: :config
1414

@@ -33,11 +33,10 @@ def log_message
3333
def declare_republish_queue
3434
queue_name = delayed_queue_name(delay: delay)
3535

36-
queue_arguments = {
37-
'x-queue-mode' => 'lazy', # tell RabbitMQ not to use RAM for this queue as it won't be consumed
36+
queue_arguments = config_delayed_queue_options.merge(
3837
'x-message-ttl' => delay * 1000, # make messages die after requested time
3938
'x-dead-letter-exchange' => dlx_exchange_name # dead messages go to original exchange and then routed to proper queues
40-
}
39+
)
4140

4241
logger.debug { "Creating delayed queue [#{queue_name}]" }
4342

0 commit comments

Comments
 (0)