Python library for sending and receiving Eiffel events


Licenses
Apache-2.0/libpng-2.0
Install
pip install eiffellib==2.0.0

Documentation

Eiffellib

Eiffellib is a python library for subscribing to and publishing Eiffel events to a message-broker.

Description

Eiffellib solves the problem of publishing Eiffel events and subscribing to events, removing the need of knowing how to connect to a message-broker or how to utilize the protocol it supplies.

With Eiffellib you can start subscribing to and publish valid Eiffel messages quickly and to get a feel for the event protocol.

It is designed to be fast and easy to start using while still being production quality.

Documentation: https://eiffellib.readthedocs.io/en/latest/

Features

  • Simple subscription and publishing of Eiffel events.
  • Event building assistance with event validation on receive and publish.
  • Following a context link.

Installation

Install the project by running:

pip install eiffellib[rabbitmq]
If you only want to use the Eiffel message definitions leave out the optional dependency:
pip install eiffellib

Examples

Start RabbitMQ

In order for these examples to work you need a RabbitMQ server:

# From https://hub.docker.com/_/rabbitmq
docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 -p 5672:5672 rabbitmq:3-management

Subscribing to an event

import time
from eiffellib.subscribers import RabbitMQSubscriber


def callback(event, context):
    print(event.pretty)

SUBSCRIBER = RabbitMQSubscriber(host="127.0.0.1", port=5672, ssl=False,
                                queue="eiffel", exchange="amq.fanout")
SUBSCRIBER.subscribe("EiffelActivityTriggeredEvent", callback)
SUBSCRIBER.start()
while True:
    time.sleep(0.1)

Publishing an event

from eiffellib.publishers import RabbitMQPublisher
from eiffellib.events import EiffelActivityTriggeredEvent

PUBLISHER = RabbitMQPublisher(host="127.0.0.1", exchange="amq.fanout", ssl=False,
                              port=5672)
PUBLISHER.start()
ACTIVITY_TRIGGERED = EiffelActivityTriggeredEvent()
ACTIVITY_TRIGGERED.data.add("name", "Test activity")
PUBLISHER.send_event(ACTIVITY_TRIGGERED)

Contribute

Support

If you are having issues, please let us know. There is a mailing list at: eiffel-pythonlib-maintainers@google-groups.com or just write an Issue.