Configuration - lifechurch/subserver GitHub Wiki
Subserver can be configured in a number of ways to best support your system.
Queues
When starting the subserver process with bundle exec subserver
subserver will start with the default
queue. This means that any Subscriber that does not specify which queue it belongs to will be loaded by this instance of Subserver. Breaking your subscribers into queues allows you to control the horizontal scaling by running multiple subserver processes.
For Example
Run subserver using
bundle exec subserver -q 'critical'
bundle exec subserver -q 'low' -q 'default'
And provide the queue in your subscriber class
class MyImportantSubscriber
include Subserver::Subscriber
subserver_options subscription: 'important-messages', queue: 'critital'
end
class MyImportantSubscriber
include Subserver::Subscriber
subserver_options subscription: 'regular-messages', queue: 'low'
end
This allows you to independently scale your critical messages based on load.
Subscriber Config
When Subserver starts a listener thread for Pub/Sub it allows configuration of the underlying Pub/Sub subscriber.
class MySubscriber
include Subserver::Subscriber
subserver_options {
subscription: 'my-subscription',
deadline: 60,
streams: 2,
threads: {
callback: 4,
push: 2
},
inventory: 1000
}
Avalible Subscriber Options:
Option | Type | Description |
---|---|---|
subscription | string Required: True | The name of the Pub/Sub topic subscription. |
deadline | numeric Required: false Default: 60 | The number of seconds the listener will wait for message acknowlagement. |
streams | numberic Required: false Default: 2 | The number of recieveing streams for this subscription. |
threads | hash Required: false Default: {callback: 4, push: 2} | The number of threads for recieveing messages and pushing acknowlagement. |
inventory | numeric Required: false Default: 1000 | The number of received messages the subscriber will hold in memory. |
queue | string Required: false Default: 'default | The queue that the Subscriber should be loaded on. |