Это не рабочий код, но что-то вроде этого может помочь вам достичь желаемого.
Вы можете определить промежуточное ПО и добавить его в sidekiq, как показано ниже
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Sidekiq::RetryMonitoringMiddleware
end
end
Теперь вы можете определить в промежуточном программном обеспечении, как указано ниже:
class Sidekiq::RetryMonitoringMiddleware
def call(worker, job_params, _queue)
#calling the worker perform method to add it to the queue
worker.perform(job_params['jid'], *job_params['args']) if should_retry?(job_params)
rescue StandardError => e
Rails.logger.error e
ensure
yield
end
private
def should_retry?(job)
# If worker is having a failure flag then only it should return a response
# Need to check in which key we get a failure message
(Integer(job['failure'])) == (1 || "true")
end
end
Надеюсь, это поможет !!