1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
create or replace function pgq.unregister_consumer(
x_queue_name text,
x_consumer_name text)
returns integer as $$
-- ----------------------------------------------------------------------
-- Function: pgq.unregister_consumer(2)
--
-- Unsubscriber consumer from the queue. Also consumer's failed
-- and retry events are deleted.
--
-- Parameters:
-- x_queue_name - Name of the queue
-- x_consumer_name - Name of the consumer
--
-- Returns:
-- nothing
-- ----------------------------------------------------------------------
declare
x_sub_id integer;
begin
select sub_id into x_sub_id
from pgq.subscription, pgq.consumer, pgq.queue
where sub_queue = queue_id
and sub_consumer = co_id
and queue_name = x_queue_name
and co_name = x_consumer_name;
if not found then
raise exception 'consumer not registered on queue';
end if;
delete from pgq.retry_queue
where ev_owner = x_sub_id;
delete from pgq.failed_queue
where ev_owner = x_sub_id;
delete from pgq.subscription
where sub_id = x_sub_id;
return 1;
end;
$$ language plpgsql security definer;
|