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
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb825fd91920c87f6c68b9350544da831ddf3fe538d65e4c97bc8303cb4acb5c |
|
MD5 | 61eb8d2f1aebcb8c095d249bba855071 |
|
BLAKE2b-256 | b1717e8edb811960aa23ad78de8c29651bfbd28019f61951a2ed914d4892bb00 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 963b9e731c81e7b7e6ffd55d1836d3fb74b14e7c81b5bdf92f9a39ebf2f13aa9 |
|
MD5 | 4196c9816e1b8ebd47d76b0fa27f0f3b |
|
BLAKE2b-256 | c9aa1955420ae7556e7bec27c2f8c0e2cdd637002b718023c90d4ec5d3890d8e |