def unreceive(message, options = {})
raise Stomp::Error::NoCurrentConnection if @closed_check && 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')
message.headers.delete(:subscription) if message.headers[:subscription]
begin
self.begin transaction_id
if client_ack?(message) || options[:force_client_ack]
self.ack(message_id, :transaction => transaction_id)
end
if message.headers[: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