All Projects → asyncapi → event-gateway

asyncapi / event-gateway

Licence: Apache-2.0 license
AsyncAPI Event Gateway

Programming Languages

go
31211 projects - #10 most used programming language
HCL
1544 projects
Makefile
30231 projects
Smarty
1635 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to event-gateway

incubator-eventmesh
EventMesh is a dynamic event-driven application runtime used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
Stars: ✭ 939 (+2582.86%)
Mutual labels:  event-driven, event-gateway
rule-engine
基于流程,事件驱动,可拓展,响应式,轻量级的规则引擎。
Stars: ✭ 165 (+371.43%)
Mutual labels:  event-driven
napalm-logs
Cross-vendor normalisation for network syslog messages, following the OpenConfig and IETF YANG models
Stars: ✭ 131 (+274.29%)
Mutual labels:  event-driven
UT GameEventSystem
A flexible event system in Unreal Engine 4
Stars: ✭ 33 (-5.71%)
Mutual labels:  event-driven
awesome-talks
Awesome talks about event sourcing, cqrs, microservices, funcional programming ...
Stars: ✭ 23 (-34.29%)
Mutual labels:  event-driven
saint-build
monitor your jenkins operations, jobs in async and functional elegance
Stars: ✭ 13 (-62.86%)
Mutual labels:  event-driven
eventkit
Event-driven data pipelines
Stars: ✭ 94 (+168.57%)
Mutual labels:  event-driven
commander
Build event-driven and event streaming applications with ease
Stars: ✭ 60 (+71.43%)
Mutual labels:  event-driven
conn
netpoll事件驱动,goroutine协程池化,降低无效协程的资源占用,适用于高连接数(对于低频数据传输的场景,可以大幅降低协程数,提升资源利用率)
Stars: ✭ 28 (-20%)
Mutual labels:  event-driven
covid19-stream-processors
Stream Information & Example Applications for Processing JHU and CovidTracking.com COVID-19 data available as streams over Solace
Stars: ✭ 35 (+0%)
Mutual labels:  event-driven
html-template
HTML template for AsyncAPI Generator
Stars: ✭ 38 (+8.57%)
Mutual labels:  asyncapi
Beef
Business Entity Execution Framework
Stars: ✭ 95 (+171.43%)
Mutual labels:  event-driven
spring-cloud-stream-outbox-extension
Spring Cloud Stream Transactional Messaging Extension
Stars: ✭ 18 (-48.57%)
Mutual labels:  event-driven
java-spring-cloud-stream-template
Java Spring Cloud Stream template for the AsyncAPI Generator
Stars: ✭ 26 (-25.71%)
Mutual labels:  asyncapi
Unity3D-ReactiveScriptables
ScriptableObject based framework / scaffolding that facilitates loosely coupled communication and automatic update propagation between MonoBehaviour components.
Stars: ✭ 25 (-28.57%)
Mutual labels:  event-driven
event-gateway-workshop
Learn what the Event Gateway is, how it works and build your first event-driven multi-cloud application!
Stars: ✭ 18 (-48.57%)
Mutual labels:  event-gateway
eda-tutorial
Event-Driven Tutorial for Distributed Data with CQRS and Event Sourcing
Stars: ✭ 49 (+40%)
Mutual labels:  event-driven
axon-multi
Playground application demonstrating DDD, EDA, CQRS with Axon
Stars: ✭ 23 (-34.29%)
Mutual labels:  event-driven
nodebb
NodeJs components
Stars: ✭ 19 (-45.71%)
Mutual labels:  event-driven
Vaser
Vaser is a powerful high performance event based network engine library for C# .Net. It’s possible to start multiple servers in one program and use the same network code for all servers. In the network communication are all strings are omitted, instead it is based on a unique binary identifier, which the CPU and memory relieves massively.
Stars: ✭ 23 (-34.29%)
Mutual labels:  event-driven

AsyncAPI Event Gateway


Share your use case with us

⚠️ Still under development, it didn't reach v1.0.0 and therefore is not suitable for production use yet.

All Contributors

Overview

AsyncAPI Event Gateway (name is subject to change) is the Event Gateway solution by excellence.

Based on traditional API Gateways, it intercepts all incoming messages moving them into a pipeline of middlewares and handlers such as:

  • Message validation
  • Message manipulation
  • Message aggregation
  • Message filtering
  • Authentication
  • Throttling
  • Routing
  • Monitoring (including tracing)

It supports all the protocols AsyncAPI supports through bindings.

This Event Gateway is also compatible with the HTTP protocol, natively or through an external provider like Krakend.io.

AsyncAPI Event Gateway big picture

Goals

1. Performance-first while ensuring message delivery

The Event Gateway it's a stateless solution that ensures messages are delivered as fast as possible using a minimal resource footprint. Delivering messages as a top priority means no data loss should happen.

2. Transparent usage.

No change in the user's code is needed. The service acts as a proxy between the client and the final broker(s). Messages infer the protocol based on the shape of the input network packet.

3. Fully configurable.

The service is entirely configurable, and the user can specify the settings for all protocols as well. For example, consumers' and producers' settings.

4. API-first

The service provides an API for uploading AsyncAPI specs, allowing the user to update their message validation, among others, very quickly. It could even be an automated task whenever you update your specs.

5. Extensible

The Event Gateway can extend its functionality via middlewares written by the community. A catalog of middlewares made by the community is also available.

Roadmap

The idea is to keep iterating and support all the protocols AsyncAPI supports through bindings.
However, we reduced the scope for the first versions, so we can give support to the most used protocols.

For the first version, only Kafka protocol will be supported.

Demo

A demo of the Event Gateway has been deployed and it is completely available to the users. It is a very limited demo environment, but it is a good starting point for the users to familiarize on the concept.

Note that as per today, only the Kafka protocol is supported. More info at docs/config/kafka.md. The AsyncAPI file used for the demo is available here. You can also open it with Studio.

This video introduces this demo application:
Quick introduction to what AsyncAPI Event-Gateway is capable of in 2021

Main things you can do now:

  • Produce Kafka messages to the Kafka broker event-gateway-demo.asyncapi.com:20472 and topic event-gateway-demo. The expected message payload (lightMeasured) is:

    type: object
    properties:
      lumens:
        type: integer
        minimum: 0
        description: Light intensity measured in lumens.
      sentAt:
        type: string
        format: date-time
        description: Date and time when the message was sent.

    You can use kcat as the Kafka producer (headers are totally optional):

    echo '{"lumens": 100}' | kcat -H test=true -H origin=readme -H time=(date) -b event-gateway-demo.asyncapi.com:20472 -t event-gateway-demo -P
  • Consume Kafka messages from the Kafka broker event-gateway-demo.asyncapi.com:20472 and topic event-gateway-demo. You can use kcat as the Kafka consumer (headers are totally optional):

    kcat -b event-gateway-demo.asyncapi.com:20472 -t event-gateway-demo -C
  • Watch for the messages via the websocket endpoint at ws://event-gateway-demo.asyncapi.com:5000/ws. You can use Websocat to connect to the websocket:

    websocat -v ws://event-gateway-demo.asyncapi.com:5000/ws

    This websocket endpoint consumes from another Kafka topic where the original produced messages are forwarded.

    In the case of producing messages with an invalid payload (payloads that don't validate against the schema above), an extra metadata field (Kafka header under the hood) named _asyncapi_eg_validation_error will be included in the message. For example:

    "_asyncapi_eg_validation_error": "{\"ts\":\"2021-12-20T11:33:26.583143572Z\",\"errors\":[\"lumens: Invalid type. Expected: integer, given: boolean\"]}",

Getting Started

Install from Docker

TBD

Install from pre-compiled binaries

TBD

Install from source

This project is built with Go, and it uses Go Modules for managing dependencies.
The Minimum required version of Go is set in go.mod file.

  1. Clone this repository.
  2. Run make build. The binary will be placed at bin/out/event-gateway.

Configuration

Please refer to config reference.

Contributing

Read CONTRIBUTING guide.

Contributors

Thanks goes to these wonderful people (emoji key):


Sergio Moya

💬 🐛 💻 📖 🤔 🚇 🚧 📆 🔬 👀 ⚠️

Fran Méndez

🤔 👀

Maciej Urbańczyk

👀

Lukasz Gornicki

👀

Paul B.

👀

Jonas Lagoni

👀

This project follows the all-contributors specification. Contributions of any kind welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].