MQ Connector for Neon Modules
Project description
Neon MQ Connector
The Neon MQ Connector is an MQ interface for microservices.
Configuration
By default, this package will use ovos-config
to read default configuration. In general, configuration should be passed to the
MQConnector
object at init.
Legacy Configuration
A global configuration for the MQ Connector may be specified at ~/.config/neon/mq_config.json
. This configuration file
may contain the following keys:
server
: The hostname or IP address of the MQ server to connect to. If left blank, this defaults to"localhost"
port
: The port used by the MQ server. If left blank, this defaults to5672
users
: A mapping of service names to credentials. Note that not all users will have permissions required to access each service.
{
"server": "localhost",
"port": 5672,
"users": {
"<service_name>": {
"username": "<username>",
"password": "<password>"
}
}
}
Services
The MQConnector
class should be extended by a class providing some specific service.
Service classes will specify the following parameters.
service_name
: Name of the service, used to identify credentials in configurationvhost
: Virtual host to connect to; messages are all constrained to this namespace.consumers
: Dict of names toConsumerThread
objects. AConsumerThread
will accept a connection to a particularconnection
, aqueue
, and acallback_func
connection
: MQ connection to thevhost
specified above.queue
: Queue to monitor within thevhost
. Avhost
may handle multiple queues.callback_func
: Function to call when a message arrives in thequeue
Callback Functions
A callback function should have the following signature:
def handle_api_input(self,
channel: pika.channel.Channel,
method: pika.spec.Basic.Return,
properties: pika.spec.BasicProperties,
body: bytes):
"""
Handles input requests from MQ to Neon API
:param channel: MQ channel object (pika.channel.Channel)
:param method: MQ return method (pika.spec.Basic.Return)
:param properties: MQ properties (pika.spec.BasicProperties)
:param body: request body (bytes)
"""
Generally, body
should be decoded into a dict
, and that dict
should contain message_id
. The message_id
should
be included in the body of any response to associate the response to the request.
A response may be sent via:
channel.queue_declare(queue='<queue>')
channel.basic_publish(exchange='',
routing_key='<queue>',
body=<data>,
properties=pika.BasicProperties(expiration='1000')
)
Where <queue>
is the queue to which the response will be published, and data
is a bytes
response (generally a base64
-encoded dict
).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for neon_mq_connector-0.7.1a4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb0630cdb8519063aa4076ce7c4be49e79c66f70033b6726ae8cee5a8de44a2e |
|
MD5 | fe2425d94f3d9919cef089ee6928ab93 |
|
BLAKE2b-256 | 5ed9fbb898cab633cfa8f3e9280a9f39536b9c34c3731be6a3ff52b1d1a6e323 |
Hashes for neon_mq_connector-0.7.1a4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd76597c92693da61db550b61f3e40752c11a1247ef2565da69dad81d62655b0 |
|
MD5 | 6041a06c81a12500a85f0e7b860bc9ee |
|
BLAKE2b-256 | a930db1234ba541418e856b5dc8e638c986ee54b8c8daecb4ebb6adec6106ece |