def unreceive(message, options = {})
raise Stomp::Error::NoCurrentConnection if closed?
options = { :dead_letter_queue => "/queue/DLQ", :max_redeliveries => 6 }.merge options
message.headers = message.headers.symbolize_keys
retry_count = message.headers[:retry_count].to_i || 0
message.headers[:retry_count] = retry_count + 1
transaction_id = "transaction-#{message.headers[:'message-id']}-#{retry_count}"
message_id = message.headers.delete('message-id''message-id')
begin
self.begin transaction_id
if client_ack?(message) || options[:force_client_ack]
self.ack(message_id, :transaction => transaction_id)
end
if retry_count <= options[:max_redeliveries]
self.publish(message.headers[:destination], message.body, message.headers.merge(:transaction => transaction_id))
else
self.publish(options[:dead_letter_queue], message.body, message.headers.merge(:transaction => transaction_id, :original_destination => message.headers[:destination], :persistent => true))
end
self.commit transaction_id
rescue Exception => exception
self.abort transaction_id
raise exception
end
end