AMGI (Asynchronous Messaging Gateway Interface) is the spiritual sibling of ASGI. While the focus of ASGI is HTTP, the focus of AMGI is event-based applications.
This repository contains multiple AMGI implementations, as well as a typed microframework, AsyncFast, in the spirit of FastAPI it attempts to make typed asynchronous APIs easy to develop.
Core aims of both AMGI and AsyncFast:
-
Portable: Following AMGI should allow for implementations of any protocol, applications should be able to run anywhere regardless of compute. Running in Lambda should be no more difficult than running on EC2
-
Standards-based: Based on AsyncAPI, and JSON Schema. The framework should allow for easy documentation generation
-
Clean Implementation: Each protocol should be implemented well; this means easy to use, and as optimal as possible
- For documentation on the AMGI specification
- For documentation on AsyncFast
At the moment there are base implementations for the following protocols, these are all working AMGI servers:
Kafka: amgi-aiokafka is a basic Kafka sever implementation
MQTT: amgi-paho-mqtt is a basic MQTT sever implementation
Redis: amgi-redis is a basic Redis server implementation, soon with support for Redis Streams
SQS: amgi-aiobotocore contains a basic SQS sever implementation. amgi-sqs-event-source-mapping allows you to run an application in Lambda, with it translating the SQS Lambda event to the necessary AMGI calls
For questions or suggestions, please contact jack.burridge@mail.com.