SUBSCRIBE_SERVICE
SUBSCRIBE_SERVICE
subscribes a worker to a service queue for the duration of the connected session.
Note
If you haven’t already, read the Workload manager guide.
See also UNSUBSCRIBE_SERVICE, SHOW_SUBSCRIBED_INSTANCES.
Permissions
To subscribe a worker to a service, the current role must have the SUPERUSER
permission.
Syntax
subscribe_service_statement ::=
SELECT SUBSCRIBE_SERVICE( worker_id, service_name );
worker_id ::= text
service_name ::= text
Parameters
Parameter |
Description |
---|---|
|
The name of the worker to subscribe |
|
The service name to subscribe to. If the service does not exist, it will be created |
Notes
If the service name does not currently exist, it will be created
Warning
SUBSCRIBE_SERVICE
applies the service subscription immediately, but the setting applies for the duration of the session. To apply a persistent setting, use the initialSubscribedServices
configuration setting. Read the Workload manager guide for more information.
Examples
Subscribing a worker to a service queue
A common use of the workload manager is to separate ETL tasks from BI tasks.
Each worker is assigned an automatic ID, and is subscribed to the 'sqream'
queue upon start.
t=> SELECT SHOW_SUBSCRIBED_INSTANCES();
service | servernode | serverip | serverport
--------+------------+---------------+-----------
sqream | node_9383 | 192.168.0.111 | 5000
sqream | node_9384 | 192.168.0.111 | 5001
sqream | node_9385 | 192.168.0.111 | 5002
sqream | node_9551 | 192.168.1.91 | 5000
We want to modify node_9551 to join the ETL queue, which will be created when we subscribe it:
t=> SELECT SUBSCRIBE_SERVICE('node_9551','etl');
executed
t=> SELECT SHOW_SUBSCRIBED_INSTANCES();
service | servernode | serverip | serverport
--------+------------+---------------+-----------
sqream | node_9383 | 192.168.0.111 | 5000
sqream | node_9384 | 192.168.0.111 | 5001
sqream | node_9385 | 192.168.0.111 | 5002
sqream | node_9551 | 192.168.1.91 | 5000
etl | node_9551 | 192.168.1.91 | 5000
To connect to the new queue, use the service
parameter in the connection string. A statement executed from a connections to the etl
service will be routed to an available worker that is subscribed to the etl
service queue.