Skip to main content

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 to 5672
  • 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 configuration
  • vhost: Virtual host to connect to; messages are all constrained to this namespace.
  • consumers: Dict of names to ConsumerThread objects. A ConsumerThread will accept a connection to a particular connection, a queue, and a callback_func
    • connection: MQ connection to the vhost specified above.
    • queue: Queue to monitor within the vhost. A vhost may handle multiple queues.
    • callback_func: Function to call when a message arrives in the queue

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).

Asynchronous Consumers

By default, async-based consumers handling based on pika.SelectConnection will be used

Override use of async consumers

There are a few methods to disable use of async consumers/subscribers.

  1. To disable async consumers for a particular class/object, set the class-attribute async_consumers_enabled to False:

    from neon_mq_connector import MQConnector
    
    class MQConnectorChild(MQConnector):
       async_consumers_enabled = False
    
  2. To disable the use of async consumers at runtime, set the MQ_ASYNC_CONSUMERS envvar to False

    export MQ_ASYNC_CONSUMERS=false
    

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

neon_mq_connector-0.10.0.tar.gz (31.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neon_mq_connector-0.10.0-py3-none-any.whl (53.5 kB view details)

Uploaded Python 3

File details

Details for the file neon_mq_connector-0.10.0.tar.gz.

File metadata

  • Download URL: neon_mq_connector-0.10.0.tar.gz
  • Upload date:
  • Size: 31.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for neon_mq_connector-0.10.0.tar.gz
Algorithm Hash digest
SHA256 a8f927d8d73ce8fc62dc4f3f5c4254454e91cfaf0d261159db9de4e2ff5553d7
MD5 03dd218f3b0a41059a6dce6e9f7ea26d
BLAKE2b-256 4c36bd7df4928ad6c9d957289b1c1716abe5c1d10fbf9c84fef965f5fc4821ba

See more details on using hashes here.

File details

Details for the file neon_mq_connector-0.10.0-py3-none-any.whl.

File metadata

File hashes

Hashes for neon_mq_connector-0.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c95cb4fd9bfb661af6722dc3f4f4d7107241bf0d332c0658e179c9f894c00768
MD5 9f1f7699c916aa192892f36a510e595b
BLAKE2b-256 93e63c818e87b2850fd009699995879c27dce021ab3d03fb88b403845551560b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page