|  | 
|  | 1 | + | 
|  | 2 | +  broker_id serial NOT NULL, | 
|  | 3 | +  host text NOT NULL, | 
|  | 4 | +  port integer NOT NULL DEFAULT 5672, | 
|  | 5 | +  vhost text, | 
|  | 6 | +  username text, | 
|  | 7 | +  password text, | 
|  | 8 | +  PRIMARY KEY (broker_id, host, port) | 
|  | 9 | +); | 
|  | 10 | + | 
|  | 11 | +SELECT pg_catalog.pg_extension_config_dump ('@[email protected]' , '' ); | 
|  | 12 | +SELECT pg_catalog.pg_extension_config_dump ('@[email protected]_broker_id_seq' , '' ); | 
|  | 13 | + | 
|  | 14 | +CREATE FUNCTION @[email protected] _publish( | 
|  | 15 | +    broker_id integer | 
|  | 16 | +    , exchange varchar | 
|  | 17 | +    , routing_key varchar | 
|  | 18 | +    , message varchar | 
|  | 19 | +    , delivery_mode integer default null | 
|  | 20 | +    , content_type varchar default null | 
|  | 21 | +    , reply_to varchar default null | 
|  | 22 | +    , correlation_id varchar default null | 
|  | 23 | +) | 
|  | 24 | + | 
|  | 25 | +RETURNS boolean AS 'pg_amqp.so', 'pg_amqp_autonomous_publish' | 
|  | 26 | +LANGUAGE C IMMUTABLE; | 
|  | 27 | + | 
|  | 28 | +COMMENT ON FUNCTION @[email protected]_publish(integer, varchar, varchar, varchar, integer, varchar, varchar, varchar) IS | 
|  | 29 | +'Works as amqp.publish does, but the message is published immediately irrespective of the | 
|  | 30 | +current transaction state.  PostgreSQL commit and rollback at a later point will have no | 
|  | 31 | +effect on this message being sent to AMQP.'; | 
|  | 32 | + | 
|  | 33 | + | 
|  | 34 | +CREATE FUNCTION amqp.disconnect(broker_id integer) | 
|  | 35 | +RETURNS void AS 'pg_amqp.so', 'pg_amqp_disconnect' | 
|  | 36 | +LANGUAGE C IMMUTABLE STRICT; | 
|  | 37 | + | 
|  | 38 | +COMMENT ON FUNCTION amqp.disconnect(integer) IS | 
|  | 39 | +'Explicitly disconnect the specified (broker_id) if it is current connected. Broker | 
|  | 40 | +connections, once established, live until the PostgreSQL backend terminated.  This | 
|  | 41 | +allows for more precise control over that. | 
|  | 42 | +select amqp.disconnect(broker_id) from amqp.broker | 
|  | 43 | +will disconnect any brokers that may be connected.'; | 
|  | 44 | + | 
|  | 45 | + | 
|  | 46 | +CREATE FUNCTION amqp.exchange_declare( | 
|  | 47 | +    broker_id integer | 
|  | 48 | +    , exchange varchar  | 
|  | 49 | +    , exchange_type varchar | 
|  | 50 | +    , passive boolean | 
|  | 51 | +    , durable boolean | 
|  | 52 | +    , auto_delete boolean DEFAULT false | 
|  | 53 | +) | 
|  | 54 | +RETURNS boolean AS 'pg_amqp.so', 'pg_amqp_exchange_declare' | 
|  | 55 | +LANGUAGE C IMMUTABLE; | 
|  | 56 | + | 
|  | 57 | +COMMENT ON FUNCTION amqp.exchange_declare(integer, varchar, varchar, boolean, boolean, boolean) IS | 
|  | 58 | +'Declares a exchange (broker_id, exchange_name, exchange_type, passive, durable, auto_delete) | 
|  | 59 | +auto_delete should be set to false (default) as unexpected errors can cause disconnect/reconnect which | 
|  | 60 | +would trigger the auto deletion of the exchange.'; | 
|  | 61 | + | 
|  | 62 | + | 
|  | 63 | +CREATE FUNCTION @[email protected] ( | 
|  | 64 | +    broker_id integer | 
|  | 65 | +    , exchange varchar | 
|  | 66 | +    , routing_key varchar | 
|  | 67 | +    , message varchar | 
|  | 68 | +    , delivery_mode integer default null | 
|  | 69 | +    , content_type varchar default null | 
|  | 70 | +    , reply_to varchar default null | 
|  | 71 | +    , correlation_id varchar default null | 
|  | 72 | +) | 
|  | 73 | +RETURNS boolean AS 'pg_amqp.so', 'pg_amqp_publish' | 
|  | 74 | +LANGUAGE C IMMUTABLE; | 
|  | 75 | + | 
|  | 76 | +COMMENT ON FUNCTION @[email protected](integer, varchar, varchar, varchar, integer, varchar, varchar, varchar) IS | 
|  | 77 | +'Publishes a message (broker_id, exchange, routing_key, message).  | 
|  | 78 | +The message will only be published if the containing PostgreSQL transaction successfully commits.   | 
|  | 79 | +Under certain circumstances, the AMQP commit might fail.  In this case, a WARNING is emitted.  | 
|  | 80 | +The last four parameters are optional and set the following message properties:  | 
|  | 81 | +delivery_mode (either 1 or 2), content_type, reply_to and correlation_id. | 
|  | 82 | +
 | 
|  | 83 | +Publish returns a boolean indicating if the publish command was successful.  Note that as | 
|  | 84 | +AMQP publish is asynchronous, you may find out later it was unsuccessful.'; | 
|  | 85 | + | 
0 commit comments