Skip to main content

Event propagation to configured ingress plugins

Project description

An asynchronous message ingress system. evbus is an app-merge component for larger projects. Events are put on a broker queue. A listener watches the broker queue and propagates events to configured ingress queues.

INSTALLATION

Install from pypi

pip install pop-evbus

Install locally with testing libraries:

$ git clone git@gitlab.com:vmware/idem/evbus.git
$ pip install -e evbus -r evbus/requirements/test.in

Firing Events

There are two functions that will put an event into the broker queue; put and put_nowait The only difference between them is that put is asynchronous and put_nowait is synchronous. Both accept a routing_key, body, and profile.

routing_key

This option is forwarded to the ingress plugins’ publish functions. Some message queues take a routing_key option themselves, some need to open a channel on the message queue for the named routing_key. It’s up to the ingress plugins to implement this appropriately for the message queue they wrap.

body

The event body is serialized by the evbus broker when it is put on the broker Queue. The body can be any serializable object. The serializer can be configured by setting hub.serialize.PLUGIN to the name of the plugin that should be used.

profile

Configured profiles are formatted as follows:

provider:
  profile_name:
      profile_data:

The profile parameter for the broker put and put_nowait functions specifies which profile_name should be used for firing an event. If no profile is specified, the profiles called “default” will be used. There can be multiple providers with the same profile name, the event will be forwarded to all providers that have a matching profile name. A context (ctx) will be generated that will be sent to the appropriate ingress plugin’s publish function based on profile.

Full Example

Asynchronous put:

async def my_func(hub):
    await hub.evbus.broker.put(
        routing_key="channel", body={"message": "event content"}, profile="default"
    )

Synchronous put:

def my_func(hub):
    hub.evbus.broker.put_nowait(
        routing_key="channel", body={"message": "event content"}, profile="default"
    )

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pop-evbus-5.0.1.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

pop_evbus-5.0.1-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file pop-evbus-5.0.1.tar.gz.

File metadata

  • Download URL: pop-evbus-5.0.1.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for pop-evbus-5.0.1.tar.gz
Algorithm Hash digest
SHA256 bb825fd91920c87f6c68b9350544da831ddf3fe538d65e4c97bc8303cb4acb5c
MD5 61eb8d2f1aebcb8c095d249bba855071
BLAKE2b-256 b1717e8edb811960aa23ad78de8c29651bfbd28019f61951a2ed914d4892bb00

See more details on using hashes here.

File details

Details for the file pop_evbus-5.0.1-py3-none-any.whl.

File metadata

  • Download URL: pop_evbus-5.0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for pop_evbus-5.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 963b9e731c81e7b7e6ffd55d1836d3fb74b14e7c81b5bdf92f9a39ebf2f13aa9
MD5 4196c9816e1b8ebd47d76b0fa27f0f3b
BLAKE2b-256 c9aa1955420ae7556e7bec27c2f8c0e2cdd637002b718023c90d4ec5d3890d8e

See more details on using hashes here.

Supported by

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