Spring eventing is used as Eventing Solution

Acronym
sig-eventing-solution
Belongs to
SIG Eventing
Responsible
akosmehl
History
(v1)   2021-01-13 - created initially
(v2)   2021-01-15 - added reason for decision and possible options
(v3)   2021-01-22 - added a resolution and resolution details
(v4)   2021-02-19 - completed todos and added link to wiki

Why is there need for such a decision?

A multitude of possible eventing solutions exist on the market. While most solutions have very similar functionality at their core, the different subsystems have to agree to use the same program, to be able to communicate well with each other.

Additional sources for better understanding the background

Viable Options

Alternatives not seriously considered

None of these are open-source solutions which would limit us in our own open-source project. Additionally, all of these are specialized for use in their respective cloud environments or need a paid license.

How is this decision evaluated?

After building small proof of concepts, we will evaluate this decision based on the experienced features and issues. The proof of concepts are designed to be very similar to the actual use case. So in this case:

Resolution Details

We recommend Spring Eventing as a solid default, since it is already included in the spring-web libraries we already use. RabbitMQ presents a viable alternative, should the need arise for a broker based eventing solution (docker container highly recommended).

General Information and Code Examples can be found in the wiki.

Reasons for the resolution

Spring Eventing and RabbitMQ are both good solutions for this project. Both provide everything we need with only a few additional features as overhead. Kafka on the other hand provides a huge amount of tools for analysing and monitoring event traffic, which might be useful in a huge microservice landscape, but is way too heavy for a small project such as this.