Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions lib/rabbitmq/http/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,12 @@ def declare_queue(vhost, name, attributes)
decode_resource(response)
end

def delete_queue(vhost, name)
decode_resource(@connection.delete("queues/#{encode_uri_path_segment(vhost)}/#{encode_uri_path_segment(name)}"))
def delete_queue(vhost, name, if_unused = false, if_empty = false)
response = @connection.delete("queues/#{encode_uri_path_segment(vhost)}/#{encode_uri_path_segment(name)}") do |req|
req.params["if-unused"] = true if if_unused
req.params["if-empty"] = true if if_empty
end
decode_resource(response)
end

def list_queue_bindings(vhost, queue, query = {})
Expand Down
26 changes: 26 additions & 0 deletions spec/integration/api_endpoints_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,32 @@ def await_event_propagation
it "deletes a queue" do
q = @channel.queue(queue_name, durable: false)
subject.delete_queue("/", queue_name)
expect { subject.queue_info("/", queue_name) }.to raise_error(Faraday::ResourceNotFound)
end

it "doesn't delete non-empty queue if if-empty is set" do
q = @channel.queue(queue_name, durable: false)
q.publish("hello")
expect do
subject.delete_queue("/", queue_name, false, true)
end.to raise_error(Faraday::ClientError)

subject.purge_queue("/", q.name)
subject.delete_queue("/", queue_name, false, true)
expect { subject.queue_info("/", queue_name) }.to raise_error(Faraday::ResourceNotFound)
end

it "doesn't delete used queue if if-unused is set" do
q = @channel.queue(queue_name, durable: false)
consumer = q.subscribe
Comment thread
michaelklishin marked this conversation as resolved.
Outdated

expect do
subject.delete_queue("/", queue_name, true, false)
end.to raise_error(Faraday::ClientError)

consumer.cancel
subject.delete_queue("/", queue_name, true, false)
expect { subject.queue_info("/", queue_name) }.to raise_error(Faraday::ResourceNotFound)
end
end

Expand Down