Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WFLY-15016] Reactive Messaging and AMQ Streams support #414

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
= Full Support for MicroProfile Reactive Messaging for AMQ Streams (Kafka) integration
:author: Kabir Khan
:email: [email protected]
:toc: left
:icons: font
:idprefix:
:idseparator: -

== Overview
AMQ Streams is Red Hat's offering of Kafka on OpenShift. Users use the AMQ Streams operator to create a Kafka instance in their OpenShift setup.

Most of the work has been done in the related issues below, so this RFE is more about testing and documenting.

== Issue Metadata

=== Issue

* https://issues.redhat.com/browse/WFLY-15016[WFLY-15016]

=== Related Issues

* https://issues.redhat.com/browse/WFLY-14798[WFLY-14798 - Upgrade to MicroProfile Reactive Messaging 2.0] - This version introduces the new `@Channel` annotation, which makes it easier for users to get data into/from the Reactive Messaging Streams
* https://issues.redhat.com/browse/WFLY-14932[WFLY-14932 - Configuration of Reactive Messaging Kafka messages] - The API introduced here allows you to get information about how Kafka handled a message, and to influence how messages are sent to Kafka. Most importantly it enables the use of a key for the messages sent to Kafka, which in turn inside Kafka are stored as records. Being able to query them, and not simply use Kafka as a messaging system is important.
* https://issues.redhat.com/browse/WFLY-14987[WFLY-14987 - Ability to use an Elytron SSL Context in the Kafka connector] - The Kafka instance set up by AMQ Streams might be secured using SSL with unsigned certificates, so we need a way to specify the truststore.
* https://issues.redhat.com/browse/WFLY-13640[WFLY-13640 - Provide Support for MicroProfile Reactive Messaging 1.0 for Kafka] - This was the original issue bringing Reactive Messaging 1.0 into WildFly. Some testing was done against AMQ Streams on OpenShift.

=== Dev Contacts

* mailto:{email}[{author}]

=== QE Contacts
* mailto:[email protected][Jan Stourac]
* mailto:[email protected][Miroslav Novak]
* mailto:[email protected][Fabio Burzigotti]


=== Testing By
// Put an x in the relevant field to indicate if testing will be done by Engineering or QE.
// Discuss with QE during the Kickoff state to decide this
* [ ] Engineering

* [x] QE

=== Affected Projects or Components
* WildFly
* SmallRye Reactive Messaging
* Apache Kafka Client

=== Other Interested Projects

=== Relevant Installation Types
// Remove the x next to the relevant field if the feature in question is not relevant
// to that kind of WildFly installation
* [x] Traditional standalone server (unzipped or provisioned by Galleon)

* [ ] Managed domain

* [x] OpenShift s2i

* [x] Bootable jar

== Requirements

=== Hard Requirements
* It should be possible to connect to an AMQ Streams Kafka broker from an application.
* The following security protocols are supported
** `PLAINTEXT` - Communication is not encrypted and no autentication is needed
* `SASL_PLAINTEXT` - No encryption but with SASL-based authentication
* `TLS` - Communication is encrypted via either a CA or unsigned certificate. AMQ Streams supports the use of client certificates for optional authentication with this mechanism
* `SASL_SSL` - Encrypted communication with SASL-based authentication

=== Nice-to-Have Requirements

=== Non-Requirements
* If AMQ Streams supports https://github.com/strimzi/strimzi-kafka-oauth[Strimzi OAuth], this RFE does not introduce support for that:
** we support the SSL/SASL security mechanisms in the Kafka documentation

== Test Plan
For WildFly we test what we can as indicated in the linked <<Related Issues>>.

== Community Documentation
This is covered by the linked <<Related Issues>>.

== Release Note Content
////
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This proposal is mostly about testing and documentation, so just asking: are there no community release notes that can be mentioned here? Maybe those of the related issues here too?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really, connecting to AMQ Streams is essentially the same as we do to connect to Kafka. So there isn't anything special to work with AMQ Streams. Also the quickstart https://github.com/wildfly/quickstart/tree/main/microprofile-reactive-messaging-kafka covers how to set up AMQ Streams and connecting to it from WildFly

Draft verbiage for up to a few sentences on the feature for inclusion in the
Release Note blog article for the release that first includes this feature.
Example article: http://wildfly.org/news/2018/08/30/WildFly14-Final-Released/.
This content will be edited, so there is no need to make it perfect or discuss
what release it appears in. "See Overview" is acceptable if the overview is
suitable. For simple features best covered as an item in a bullet-point list
of features containing a few words on each, use "Bullet point: <The few words>"
////