Merge branch 'main' into main

This commit is contained in:
Ari Karim 2026-01-18 10:19:12 +03:00 committed by GitHub
commit d9bbd242d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -23,5 +23,9 @@ module RabbitCarrots
def orm def orm
@orm ||= :activerecord @orm ||= :activerecord
end end
def orm=(value)
@orm = value
end
end end
end end

View File

@ -93,19 +93,24 @@ module RabbitCarrots
handler_class.handle!(channel, delivery_info, properties, payload) handler_class.handle!(channel, delivery_info, properties, payload)
channel.ack(delivery_info.delivery_tag, false) channel.ack(delivery_info.delivery_tag, false)
rescue RabbitCarrots::EventHandlers::Errors::NackMessage, JSON::ParserError => _e rescue RabbitCarrots::EventHandlers::Errors::NackMessage, JSON::ParserError => _e
payload = encode_payload(payload)
logger.warn "Nacked message: #{payload}" logger.warn "Nacked message: #{payload}"
channel.nack(delivery_info.delivery_tag, false, false) channel.nack(delivery_info.delivery_tag, false, false)
rescue RabbitCarrots::EventHandlers::Errors::NackAndRequeueMessage => _e rescue RabbitCarrots::EventHandlers::Errors::NackAndRequeueMessage => _e
payload = encode_payload(payload)
logger.warn "Nacked and Requeued message: #{payload}" logger.warn "Nacked and Requeued message: #{payload}"
channel.nack(delivery_info.delivery_tag, false, true) channel.nack(delivery_info.delivery_tag, false, true)
rescue self.class.database_agnostic_not_null_violation, self.class.database_agnostic_record_invalid => e rescue self.class.database_agnostic_not_null_violation, self.class.database_agnostic_record_invalid => e
payload = encode_payload(payload)
logger.warn "Null constraint or Invalid violation: #{payload}. Error: #{e.message}" logger.warn "Null constraint or Invalid violation: #{payload}. Error: #{e.message}"
channel.ack(delivery_info.delivery_tag, false) channel.ack(delivery_info.delivery_tag, false)
rescue self.class.database_agnostic_connection_not_established => e rescue self.class.database_agnostic_connection_not_established => e
payload = encode_payload(payload)
logger.warn "Error connection not established to the database: #{payload}. Error: #{e.message}" logger.warn "Error connection not established to the database: #{payload}. Error: #{e.message}"
sleep 3 sleep 3
channel.nack(delivery_info.delivery_tag, false, true) channel.nack(delivery_info.delivery_tag, false, true)
rescue StandardError => e rescue StandardError => e
payload = encode_payload(payload)
logger.error "Error handling message: #{payload}. Error: #{e.message}" logger.error "Error handling message: #{payload}. Error: #{e.message}"
sleep 3 sleep 3
channel.nack(delivery_info.delivery_tag, false, true) channel.nack(delivery_info.delivery_tag, false, true)
@ -138,5 +143,14 @@ module RabbitCarrots
adapter.instance_variable_set(:@logger, logger) adapter.instance_variable_set(:@logger, logger)
adapter adapter
end end
def encode_payload(payload)
payload.encode(
'UTF-8',
invalid: :replace,
undef: :replace,
replace: ''
)
end
end end
end end