From 6f987bd0f379a290de253d8bcc3ad145831a4034 Mon Sep 17 00:00:00 2001 From: Nicolas Duminil Date: Fri, 13 Nov 2026 16:13:51 +0100 Subject: [PATCH 1/3] Add article: Reactive Messaging on Quarkus --- .../01-common-quote-source.png | Bin 0 -> 22275 bytes .../02-pipeline.png | Bin 0 -> 21484 bytes .../03-simple.png | Bin 0 -> 21608 bytes .../reactive-messaging-on-quarkus/04-msg.png | Bin 0 -> 27865 bytes .../05-kafka-feed.png | Bin 0 -> 18301 bytes .../06-kafka-processor.png | Bin 0 -> 28466 bytes .../07-kafka-logger.png | Bin 0 -> 33999 bytes .../08-kafka-alert.png | Bin 0 -> 32045 bytes .../09-kafka-alert-tests.png | Bin 0 -> 46079 bytes .../reactive-messaging-on-quarkus/index.adoc | 1609 +++++++++++++++++ .../reactive-messaging.jpg | Bin 0 -> 85839 bytes 11 files changed, 1609 insertions(+) create mode 100644 draft/reactive-messaging-on-quarkus/01-common-quote-source.png create mode 100644 draft/reactive-messaging-on-quarkus/02-pipeline.png create mode 100644 draft/reactive-messaging-on-quarkus/03-simple.png create mode 100644 draft/reactive-messaging-on-quarkus/04-msg.png create mode 100644 draft/reactive-messaging-on-quarkus/05-kafka-feed.png create mode 100644 draft/reactive-messaging-on-quarkus/06-kafka-processor.png create mode 100644 draft/reactive-messaging-on-quarkus/07-kafka-logger.png create mode 100644 draft/reactive-messaging-on-quarkus/08-kafka-alert.png create mode 100644 draft/reactive-messaging-on-quarkus/09-kafka-alert-tests.png create mode 100644 draft/reactive-messaging-on-quarkus/index.adoc create mode 100644 draft/reactive-messaging-on-quarkus/reactive-messaging.jpg diff --git a/draft/reactive-messaging-on-quarkus/01-common-quote-source.png b/draft/reactive-messaging-on-quarkus/01-common-quote-source.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f7a7c8469ee732fefadfd497b99a634e54346a GIT binary patch literal 22275 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 aHPom{BNjkm>WVQq#nM#QQ!7=m4f;1Y&Ec>B literal 0 HcmV?d00001 diff --git a/draft/reactive-messaging-on-quarkus/02-pipeline.png b/draft/reactive-messaging-on-quarkus/02-pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..76e917a52a731b393ea16ba99c36e58d9912c6f9 GIT binary patch literal 21484 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%0D?yd07G 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 literal 0 HcmV?d00001 diff --git a/draft/reactive-messaging-on-quarkus/03-simple.png b/draft/reactive-messaging-on-quarkus/03-simple.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2d9e5cd22d31600e5ae18695eca22bda4fe7b8 GIT binary patch literal 21608 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 Ms)AHXfR=&(1GiqQH~;_u literal 0 HcmV?d00001 diff --git a/draft/reactive-messaging-on-quarkus/04-msg.png b/draft/reactive-messaging-on-quarkus/04-msg.png new file mode 100644 index 0000000000000000000000000000000000000000..a514073fe91692857b7c9fbb066046f8b295d2ee GIT binary patch literal 27865 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≫$-`vi5d^y; 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 literal 0 HcmV?d00001 diff --git a/draft/reactive-messaging-on-quarkus/07-kafka-logger.png b/draft/reactive-messaging-on-quarkus/07-kafka-logger.png new file mode 100644 index 0000000000000000000000000000000000000000..49c61d67daf0cd7fd6dd0c3b916c69e7ab44b414 GIT binary patch literal 33999 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 P0{n;yNePzo>-hX1K?<6b literal 0 HcmV?d00001 diff --git a/draft/reactive-messaging-on-quarkus/08-kafka-alert.png b/draft/reactive-messaging-on-quarkus/08-kafka-alert.png new file mode 100644 index 0000000000000000000000000000000000000000..31d61a36172ba36d54d7e82473e62c44c853f1df GIT binary patch literal 32045 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

  • a0E4hX9;)Y`6Sw{((8C^3FdOerVF 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 envelopes |in memory, one JVM +|3 |`finhub-kafka/++*++` |JSON over Kafka topics |three JVMs and a broker +|4 |`finhub-kafka-alert` |JSON over Kafka topics, consumed on virtual threads |a fourth JVM and the same broker +|=== + +The software versions used throughout are Java 21.0.3, Quarkus 3.40.1.1, SmallRye Reactive Messaging +4.37.0, Mutiny 3.3.0, MicroProfile Reactive Messaging 3.0 and Kafka clients 4.2.1. + +The full code source of the project can be found https://github.com/nicolasduminil/reactive-messaging[here]. + +== 2. MicroProfile Reactive Messaging + +MicroProfile Reactive Messaging is a https://microprofile.io/specifications/reactive-messaging/[Eclipse MicroProfile] specification +aiming at connecting microservices in an asynchronous and event driven manner, +based on the https://www.reactive-streams.org/[Reactive Streams] principles. + +A chain of synchronous calls couples services in time. When the last service of +the chain is slow, every preceding service waits, and when it is unavailable, +the failure travels backwards to the initial caller. The specification states +its ambition as delivering a way to build systems of microservices that promotes +both location transparency and temporal decoupling. In plain terms, a component +should ignore where its collaborators reside, and should also be able to continue +working when they are momentarily occupied. + +The first version of the specification appeared in July 2019, version 2.0.1 in +September 2021 and version 3.0 in 2022. + +=== 2.1 The fundamental concepts + +The model rests on four concepts: + +[arabic] +. A channel is a named, opaque destination. It may be internal to the application or mapped to an +external destination by a connector. +. A message is an envelope that wraps a payload and carries two asynchronous operations, namely the +acknowledgment and the negative acknowledgment. +. A connector is an extension that manages communication with a specific technology, such as Kafka or AMQP. +. A reactive component is a CDI bean whose methods are annotated with `@Incoming`, `@Outgoing`, or both. + +The communication between components uses Reactive Streams, so that back pressure +belongs to the implementation and remains invisible in ordinary application code. +The elegance of the model lies in the fact that the wiring is established by name. +The following method constitutes a complete processor, which consumes a channel +and feeds another one. + +[source,java] +---- +@Incoming("quotes") +@Outgoing("signals") +public PriceSignal evaluate(Quote quote) +{ + return evaluator.evaluate(quote); +} +---- + +Nothing in this method reveals whether `quotes` is a list in memory or a Kafka +topic on another continent. This property of the mentioned method will be +experimentally demonstrated through the project since it migrates between stages +with its body unchanged. + +=== 2.2 Acknowledgment and its defaults + +The specification defines four acknowledgment strategies: + +[arabic] +. `MANUAL`, where the application code invokes `Message.ack()` and the implementation applies nothing +implicitly. +. `PRE++_++PROCESSING`, where the message is acknowledged before the method is executed. +. `POST++_++PROCESSING`, where the message is acknowledged after the method completes or, when data is +emitted, once that data is itself acknowledged. +. `NONE`, where the implementation does not acknowledge the incoming message. + +The default depends on the method signature, which constitutes the least intuitive +aspect of the specification. A payload signature such as `void method(...)` defaults +to `POST++_++PROCESSING`, and an exception thrown by such a method results in a +negative acknowledgment carrying that exception as its reason. A signature such as +`Message++<++...++>++ method(Message++<++...++>++)` defaults to `MANUAL`, and an exception thrown +there does not produce a negative acknowledgment automatically. A developer who +changes a parameter from a payload to a `Message` has therefore changed the error +handling of the method, without any visible indication other than a line in the +specification that very few people read twice. + +=== 2.3 Deployment time validation + +The specification requires a `DeploymentException` at startup when the topology +is invalid. Only one method may be annotated with `@Outgoing` for a given channel, +and a channel without an upstream or a downstream is rejected. + +It is equally important to note what the specification omits. It defines no +delivery guarantee, because that depends upon the broker and the connector. Its +behavior is defined only for the `@ApplicationScoped` and `@Dependent` scopes. +Most practical questions concerning partitions, commits or poison messages thus +find their answers in the implementation, as shown in the next section. + +== 3. The SmallRye implementation + +SmallRye Reactive Messaging is the implementation used by Quarkus. Its contribution +comprises three parts. + +=== 3.1 Mutiny as the programming model + +The specification is expressed in terms of Reactive Streams publishers. SmallRye +also accepts the two types of https://smallrye.io/smallrye-mutiny/[Mutiny], namely `Uni`, which represents +at most one asynchronous item, and `Multi`, which represents a stream. +A producer may consequently be expressed as follows. + +[source,java] +---- +@Outgoing("quotes") +public Multi quotes() +{ + return source.stream(); +} +---- + +=== 3.2 Extensions beyond the specification + +SmallRye relaxes certain constraints through explicit annotations and attributes. +Among these, `@Merge` allows an incoming method to accept several upstreams, and +`@Broadcast` allows one producer to feed several consumers. The Kafka connector +also has a `broadcast` attribute for the same purpose. An application using these +features gains flexibility and loses portability, which is the customary exchange +rate in this domain. + +=== 3.3 The Kafka connector + +The connector supplies the semantics that the specification deliberately left +open. Three behaviors influenced this project directly: + +[arabic] +. The default commit strategy is `throttled`, which commits the offset following the latest acknowledged +message in sequence and guarantees at least once delivery even with asynchronous processing. +. The `failure-strategy` attribute governs the treatment of a negative acknowledgment, with the values +`fail`, `ignore`, `dead-letter-queue` and `delayed-retry-topic`, the first being the default. This +project uses `ignore` in section 5.5 and `dead-letter-queue` in section 5.6. +. The `fail-on-deserialization-failure` attribute, whose default is `true`, governs a record that cannot +be deserialized. When it is set to `false`, a `null` value is forwarded. + +=== 3.4 The integration with Quarkus + +Quarkus adds Dev Services, which start a real broker automatically during tests +by means of Testcontainers, and determines the thread on which each method executes +according to its signature. + +== 4. The reactive style and the virtual thread style + +Both styles answer the same question, which is how a server can serve many +concurrent requests that spend most of their time waiting for the network, while +a platform thread remains an expensive resource. + +The reactive answer avoids waiting altogether. A small number of event loop threads +execute short callbacks, and the code is expressed as a pipeline of transformations. +The answer of virtual threads, finalized in Java 21 by JEP 444, renders the waiting +inexpensive. The code blocks in the most traditional manner, but what blocks is a +lightweight thread that the JVM parks, releasing its carrier thread for other work. + +The two are alternatives, and they do not form a progression in which the second +supersedes the first. In a messaging application, the comparison takes a particular +form. The first three stages of this project never block, and their methods run +in the reactive manner. The fourth stage must block for each message, and it does so +on virtual threads, as section 5.6 shows. + +[cols=",,",options="header",] +|=== +|Criterion |Mutiny |`@RunOnVirtualThread` +|Thread serving a message |an event loop, which must remain unblocked |one virtual thread per message +|Code style |a composed pipeline, each step being a callback |sequential statements and ordinary control flow +|Error handling |failure operators in the pipeline |`try` and `catch` +|Back pressure |a part of the model, as in section 5.5 |absent by default, to be provided explicitly +|Streams |natural, through `Multi` |requires additional constructions +|Order of the messages |preserved by default |abandoned, as section 5.6 demonstrates +|Principal hazard |a blocking call stalls every request on that event loop |a `synchronized` block around I/O pins the carrier on JDK 21 +|=== + +Two remarks qualify this table. First, on a method containing one step only, neither +style exhibits a readability advantage worthy of the name. The difference becomes +perceptible with branching, loops and error handling. +Second, the pinning hazard depends on the Java version. JEP 491, delivered in +JDK 24, allows virtual threads to hold monitors independently of their carriers, +which removes pinning caused by `synchronized`. The pinning through native code +remains however possible. As this project runs on Java 21, the hazard applies +in full and section 6 tests it accordingly. + +== 5. The Maven modules + +The project comprises a parent POM and the modules described below, each owing +its existence to a precise reason. The associated sequence diagrams were written +in PlantUML, and their sources accompany the project. + +=== 5.1 `finhub-common`, the shared library + +This module contains the Finnhub client, the domain types and the evaluation logic. +Since it's a shared module, as its name implies, it doesn't declare any channel +or binding. + +The `client` package contains `FinnhubClient`, a MicroProfile REST client, +together with its associated DTO, `FinnhubQuote`. + +[source,java] +---- +@RegisterRestClient(configKey = "finnhub") +public interface FinnhubClient +{ + @GET + @Path("/quote") + Uni quote(@QueryParam("symbol") String symbol, @QueryParam("token") String token); +} +---- + +A MicroProfile REST client, as implemented by Quarkus, isn't a class, as you +might expect, but an interface. Its implementation class is dynamically generated +by Quarkus at build time. As for the associated DTO, `FinnhubQuote`, it's +a very simple one, having only two properties: `current` holding the stock's +current price, and `previousClose` which retains the stock's price at the last +market close. + +The package `domain` defines, as its name implies, all our business objects, +like `Quote`, `Direction`, `QuoteMessage` and `PriceSignal`. They are all simple +records, except `QuoteMessage`, which is a class implementing `Message++<++Quote++>++`, +and `Direction`, which is an `enum` having the values `UP`, `DOWN` or +`FLAT`, to tell whether the associated stock's price is on an upward, downward or stable +trend. Such a price fluctuation is signaled by sending a message of `PriceSignal` +type, also a very simple record having as its properties the stock's symbol, its +new price and the delta expressed as an absolute value and as a percentage. + +The class `QuoteMessage`, which listing is reproduced below, deserves a particular +remark, because its simplicity conceals a trap into which a developer might duly fall. + +[source,java] +---- +public class QuoteMessage implements Message +{ + private static final CompletionStage SETTLED = CompletableFuture.completedFuture(null); + + private final Quote payload; + + public QuoteMessage(Quote payload) + { + this.payload = payload; + } + + @Override + public Quote getPayload() + { + return payload; + } + + @Override + public Supplier> getAck() + { + return () -> + { + Log.infof("Acknowledgment for %s", payload); + return SETTLED; + }; + } + + @Override + public Function> getNack() + { + return reason -> + { + Log.infof("Negative acknowledgment for %s, the reason is %s", payload, reason); + return SETTLED; + }; + } +} +---- + +This class implements +`Message++<++Quote++>++` and overrides `getAck()` and `getNack()` in order to log each +settlement. One could be tempted to complete the acknowledgment callback by +delegating to `Message.super.ack()`, with the apparently reasonable intention of +performing the default action. The default `ack()` is, however, specified as +invoking the supplier returned by `getAck()`, so the callback calls itself until +the stack overflows. A settlement callback must therefore complete the stage on +its own, and `QuoteMessageTest`, in this same module, demonstrates it. + +[source,java] +---- +class QuoteMessageTest +{ + private static final Quote QUOTE = + new Quote("AAPL", new BigDecimal("261.74"), new BigDecimal("259.71")); + + @Test + void getPayload_quoteGiven_returnsSameQuote() + { + assertThat(new QuoteMessage(QUOTE).getPayload()).isSameAs(QUOTE); + } + + @Test + void ack_defaultCallback_completesWithoutRecursion() + { + assertThat(new QuoteMessage(QUOTE).ack().toCompletableFuture()).isCompleted(); + } + + @Test + void nack_reasonGiven_completesWithoutRecursion() + { + assertThat(new QuoteMessage(QUOTE) + .nack(new IllegalStateException("downstream refused the quote")) + .toCompletableFuture()).isCompleted(); + } + + @Test + void nack_nullReason_throwsIllegalArgument() + { + assertThatThrownBy(() -> new QuoteMessage(QUOTE).nack(null)) + .isInstanceOf(IllegalArgumentException.class); + } +} +---- + +The `feed` package is responsible for the acquisition of the quotes, and it +contains two types. `FinnhubConfig` is a type-safe configuration mapping, +under the `finnhub` prefix the stock's symbol, the API token to be +used with the FinnHub public API and the polling interval. `QuoteSource` is a +CDI bean that produces quotes as a reactive stream. It uses the configuration +described by `FinnubConfig`. The modules that publish quotes, namely `finhub-simple`, +`finhub-msg` and `finhub-kafka-feed`, consume this stream in an origin agnostic +way. + +[source,java] +---- +@ConfigMapping(prefix = "finnhub") +public interface FinnhubConfig +{ + @WithDefault("AAPL") + String symbol(); + + Optional token(); + + @WithDefault("15") + long intervalSeconds(); +} +---- + +The interface `FinnhubConfig`, shown in the listing above , +deserves a remark. The module `finnhub-common` to which it belongs carries a +Jandex index that allows Quarkus to discover the beans and the properties inside +it. Consequently, the `FinnhubConfig` mapping is validated at the startup of +every module depending on `finhub-common`, including the Kafka processor and +the Kafka logger. But neither of them defines +any `finnhub.++*++` property. If this interface's methods were mandatory then these +two services wouldn't start. For this reason, each member of `FinnhubConfig` is +either optional or has a default value. + +The `signal` package contains two beans. `PriceMovementEvaluator` transforms a +`Quote` into a `PriceSignal`, whereas `PriceSignalLogger` records the outcome +as a line of text, whose arrow informs the reader of the direction of the market. +These beans are consumed by the components in the `finhub-pipeline` package and +by the Kafka services. + +None of the classes in these two packages carries a Reactive Messaging +annotation, and this constitutes the essential property of the module. The +business logic is ignorant of the channels that transport its data, which allows +each of the consumer modules to wire the mentioned beans in a different topology. + +The following listing presents the `PriceEvaluator` class. The first +quote of a symbol is compared with the previous market close, and each subsequent +quote is compared with the last price observed for that symbol. Since an +application scoped bean is shared among threads, these prices are held in a +`ConcurrentHashMap`, whose atomic `put` operation returns the former price while +storing the new one. A reference price of zero produces a percentage of zero, +which spares the application a division by zero. + +[source,java] +---- +@ApplicationScoped +public class PriceMovementEvaluator +{ + private final Map lastPrices = new ConcurrentHashMap<>(); + + public PriceSignal evaluate(Quote quote) + { + BigDecimal lastPrice = lastPrices.put(quote.symbol(), quote.price()); + BigDecimal reference = lastPrice != null ? lastPrice : quote.previousClose(); + BigDecimal change = quote.price().subtract(reference); + BigDecimal changePercent = reference.signum() != 0 + ? change.movePointRight(2).divide(reference, 2, RoundingMode.HALF_UP) + : BigDecimal.ZERO; + return new PriceSignal(quote.symbol(), quote.price(), direction(change), change, changePercent); + } + + private static Direction direction(BigDecimal change) + { + int sign = change.signum(); + if (sign > 0) return Direction.UP; + if (sign < 0) return Direction.DOWN; + return Direction.FLAT; + } +} +---- + +`QuoteSource` expresses the polling as a stream that outlives its failures. + +[source,java] +---- +@ApplicationScoped +@UnlessBuildProfile("test") +public class QuoteSource +{ + private final FinnhubClient finnhub; + private final FinnhubConfig config; + + public QuoteSource(@RestClient FinnhubClient finnhub, FinnhubConfig config) + { + this.finnhub = finnhub; + this.config = config; + } + + public Multi stream() + { + String symbol = config.symbol(); + return finnhub.quote(symbol, config.token().orElse("")) + .map(quote -> new Quote(symbol, quote.current(), quote.previousClose())) + .onFailure().invoke(err -> Log.warnf("Finnhub fetch failed for %s: %s", symbol, err.getMessage())) + .onFailure().recoverWithNull() + .repeat().withDelay(Duration.ofSeconds(config.intervalSeconds())).indefinitely(); + } +} +---- + +Please notice the Quarkus annotation `@UnlessBuildProfile("test")` which avoids + +to call the FinnHub public API during tests, a precaution appreciated by free +tier users. The sequence diagram below tries to summarize the interaction between +the `finhub-common` package's classes and interfaces. + +image::01-common-quote-source.png[Sequence diagram of the polling stream] + +=== 5.2 `finhub-pipeline`, the topology inside one JVM + +This module consists in a single class, `QuotePipeline` which holds the Eclipse +MicroProfile channels bindings. Its `evaluate(...)` method defines an input +channel named `quotes` on which evaluation operations are requested. This method +is invoked anytime that a new quote evaluation is requested and, in turn, it +forwards the request to the `PriceMovementEvaluator.evaluate(...)` method, in +the `finnhub-common` module, which returns a `PriceSignal` instance, showing the +associated stock's fluctuation. + +This module is shared by `finhub-simple` and `finhub-msg` which provide the +concrete producers required for the current messaging topology +which, in this case, resides in memory. Should we have some other different cases needing, +for example, AMQP instead of Kafka, their implementation would have been greatly +simplified because of having had isolated in a common component the abstracted +message exchanging process. + +[source,java] +---- +@ApplicationScoped +public class QuotePipeline +{ + private final PriceMovementEvaluator evaluator; + private final PriceSignalLogger logger; + + public QuotePipeline(PriceMovementEvaluator evaluator, PriceSignalLogger logger) + { + this.evaluator = evaluator; + this.logger = logger; + } + + @Incoming("quotes") + @Outgoing("signals") + public PriceSignal evaluate(Quote quote) + { + return evaluator.evaluate(quote); + } + + @Incoming("signals") + public void onSignal(PriceSignal signal) + { + logger.log(signal); + } +} +---- + +With no connector configured, SmallRye connects each `@Outgoing` to the corresponding `@Incoming` inside the +JVM. Both methods use payload signatures, which yields `POST++_++PROCESSING` and automatic negative acknowledgment +in case of failure, as section 2.3 described. + +image::02-pipeline.png[Sequence diagram of the in-process topology] + +=== 5.3 `finhub-simple`, bare payloads + +This package contains our first application. It consists in one class, `QuoteFeed`, +the quote producer. It demonstrates the minimal form of the model, in which the +exchange is represented by raw `Quote` instances inside framework automatically +created envelopes. + +[source,java] +---- +@ApplicationScoped +@UnlessBuildProfile("test") +public class QuoteFeed +{ + private final QuoteSource source; + + public QuoteFeed(QuoteSource source) + { + this.source = source; + } + + @Outgoing("quotes") + public Multi quotes() + { + return source.stream(); + } +} +---- + +We already explained the role of the `@UnlessBuildProfile("test")` annotation here +but, for the records, it removes the producer during tests. Then deterministic +quotes are sent directly into the channel by means of the in-memory connector, +without requiring neither a network nor a token. Which allows us to write the +following unit test: + +[source,java] +---- +@QuarkusTest +class QuotePipelineTest +{ + @Inject + @Any + InMemoryConnector connector; + + @Inject + PriceSignalLogger logger; + + @Test + void evaluate_validQuotes_acknowledgesAndLogsSignal() + { + InMemorySource> quotes = connector.source("quotes"); + + CompletableFuture risingAck = new CompletableFuture<>(); + quotes.send(quoteMessage("261.74", "259.71", risingAck)); + await().atMost(Duration.ofSeconds(5)).until(risingAck::isDone); + awaitSignal(Direction.UP, "261.74"); + + CompletableFuture fallingAck = new CompletableFuture<>(); + quotes.send(quoteMessage("260.00", "259.71", fallingAck)); + await().atMost(Duration.ofSeconds(5)).until(fallingAck::isDone); + awaitSignal(Direction.DOWN, "260.00"); + } + ... +} +---- + +The listing above shows two assertions: a positive and a negative one. +As you can see, the logic is simple: a `Message++<++Quote++>++` instance is created and +sent via the SmallRye in-memory connector to the `QuotePipeline.evaluate(...)` +method. Then, the positive case waits during maximum 5 seconds for the `ack` +signal returned by the associated callback instance of `CompletableFuture++<++Void++>++` +named here `risingAck`. Once the `ack` received, we assert that the associated +`PriceSignall` instance has its `direction` property set to `Direction.UP`. +The negative case is similar. + +image::03-simple.png[Sequence diagram of bare payloads] + +=== 5.4 `finhub-msg`, explicit envelopes + +The second application differs from the first in one line, since the producer +maps each quote to a `QuoteMessage`. The purpose is to make the settlement of +a message visible. + +[source,java] +---- +@ApplicationScoped +@UnlessBuildProfile("test") +public class QuoteFeedWithMsg +{ + private final QuoteSource source; + + public QuoteFeedWithMsg(QuoteSource source) + { + this.source = source; + } + + @Outgoing("quotes") + public Multi> quotes() + { + return source.stream().map(QuoteMessage::new); + } +} +---- + +The class `QuoteMessage` in the listing above is the one defined in the `finhub-common` +module. And the unit test is almost the same: + +[source,java] +---- +@QuarkusTest +class QuoteMessagePipelineTest +{ + @Inject + @Any + InMemoryConnector connector; + + @Inject + PriceSignalLogger logger; + + @Test + void evaluate_validMessages_acknowledgesAndLogsSignal() + { + InMemorySource> quotes = connector.source("quotes"); + + RecordingQuoteMessage rising = message("261.74", "259.71"); + quotes.send(rising); + await().atMost(Duration.ofSeconds(5)).until(rising.acknowledged::isDone); + awaitSignal(Direction.UP, "261.74"); + + RecordingQuoteMessage falling = message("260.00", "259.71"); + quotes.send(falling); + await().atMost(Duration.ofSeconds(5)).until(falling.acknowledged::isDone); + awaitSignal(Direction.DOWN, "260.00"); + } + ... +} +---- + +The private nested class `RecordingQuoteMessage` extends `QuoteMessage` in order +to observe the settlement of each message, as the following method shows. + +[source,java] +---- + @Override + public Supplier> getAck() + { + Supplier> delegate = super.getAck(); + return () -> delegate.get().thenRun(() -> acknowledged.complete(null)); + } +---- + +The method obtains the callback defined by `QuoteMessage` through `super.getAck()`, +executes it, and subsequently completes the future `acknowledged`, upon which the +test waits. The production behavior therefore remains in place, and the test +merely observes its outcome. + +image::04-msg.png[Sequence diagram of envelope settlement] + +=== 5.5 `finhub-kafka`, three services and a broker + +The module `finhub-kafka` is itself a multi-module project and, with it, we're +moving on to serious matters as introduces real distribution. It aggregates three +sides of the topology: the feed, the processor and the logger. + +The feed publishes the quotes. Its application class is nearly identical to the +one in the `finhub-msg` module and the transition from the in-memory connector +to the Kafka one is pure configuration. + +[source,properties] +---- +mp.messaging.outgoing.quotes.connector=smallrye-kafka +mp.messaging.outgoing.quotes.value.serializer=io.quarkus.kafka.client.serialization.JsonbSerializer +---- + +image::05-kafka-feed.png[Sequence diagram of the Kafka feed] + +The processor contains the method `QuoteProcessor` already examined in section +2.2, unchanged. Its configuration, on the contrary, is different as shown below: + +[source,properties] +---- +mp.messaging.incoming.quotes.fail-on-deserialization-failure=false +mp.messaging.incoming.quotes.failure-strategy=ignore +---- + +This configuration carries a cost that the reader should consider. The `ignore` +strategy applies to every processing failure on the channel, and a defect in the +processor would thereafter produce warnings instead of halting the service. A +workshop can accept this arrangement, while a system handling valuable data would +be better served by the `dead-letter-queue` strategy. + +image::06-kafka-processor.png[Sequence diagram of the Kafka processor] + +The logger consumes the signals, and it also hosts the `/api/v1/signals` endpoint. +Its deployment artifacts are generated by the `quarkus-minikube` extension, while +the `Kafka`, `KafkaNodePool` and `KafkaTopic` classes of Strimzi are handwritten +because the generator cannot produce third party custom resources. + +The manifests declare one partition per topic, and the evaluator keeps its history +in memory. Both choices are adequate for a workshop and would deserve reconsideration +elsewhere. + +The logger publishes each signal to HTTP clients through SSE (_Server Sent Events_). + +[source,java] +---- +@Path("/api/v1/signals") +public class SignalStreamResource +{ + private final SignalLogger signalLogger; + + public SignalStreamResource(SignalLogger signalLogger) + { + this.signalLogger = signalLogger; + } + + @GET + @Path("/stream") + @Produces(MediaType.SERVER_SENT_EVENTS) + @RestStreamElementType(MediaType.APPLICATION_JSON) + public Multi stream() + { + return signalLogger.signals(); + } +} +---- + +The `PriceSignal` instances published as SSE are consumed in `SignalLogger`: + +[source,java] +---- +@ApplicationScoped +public class SignalLogger +{ + private final PriceSignalLogger logger; + private final BroadcastProcessor broadcast = BroadcastProcessor.create(); + + public SignalLogger(PriceSignalLogger logger) + { + this.logger = logger; + } + + @Incoming("signals") + public void onSignal(PriceSignal signal) + { + logger.log(signal); + broadcast.onNext(signal); + } + + public Multi signals() + { + return broadcast.onOverflow().drop(); + } +} +---- + +Notice that injecting the `signals()` method above with `@Channel("signals")`, +as it would probably have been the most natural, didn't work. Malformed records +were arriving as null payloads which couldn't be represented in a stream. +Furthermore, the logging and the offset commits should remain independent of the +consumers presence and speed. The module therefore distributes the signals through +a `BroadcastProcessor`, after the logging. + +The call to `onOverflow().drop()` is essential rather than decorative, since +`BroadcastProcessor` terminates a subscriber having no outstanding demand with +a `BackPressureFailure`. Reactive back pressure is thus not a benefit received +automatically but a decision to be taken, and the decision taken here is that a +slow client misses signals and remains connected, on the grounds that a newer +price supersedes an older one. The stream is also hot, so a client receives only +what is published after its connection, as is expected to occur to any consumer +arriving late at a lecture. + +The sequence diagrams resumes all that. + +image::07-kafka-logger.png[Sequence diagram of the logger and its stream] + +=== 5.6 `finhub-kafka-alert`, consuming on virtual threads + +The services examined so far have no use for virtual threads. The processor computes +and the logger writes a line, so neither of them ever waits for anything, and +annotating their methods would constitute an elaborate means of achieving nothing. A +virtual thread becomes useful at the precise moment when a consumer must block, and +this last stage therefore introduces a consumer that does. For each signal +indicating a movement, it notifies an external system by calling a webhook through +a blocking REST client. + +[source,java] +---- +@ApplicationScoped +public class SignalAlerter +{ + private final AlertClient client; + + public SignalAlerter(@RestClient AlertClient client) + { + this.client = client; + } + + @Incoming("signals") + @RunOnVirtualThread + @Blocking("alerts") + public void alert(PriceSignal signal) + { + if (signal.direction() != Direction.FLAT) + client.send(signal); + } +} +---- + +The `AlertClient` is reproduced in the listing below: + +[source,java] +---- +@RegisterRestClient(configKey = "alert") +public interface AlertClient +{ + @POST + void send(PriceSignal signal); +} +---- + +This service consumes the existing `signals` topic under a consumer group of its own, +and the other services required no modification whatsoever. The logger remains +unaware of the existence of its new colleague, which is the temporal decoupling of +section 2.1 observed in practice. + +Virtual threads appear here beside the Mutiny of the preceding stages, so a precise +distinction is required before going further. +Section 4 presented the two styles as alternative solutions to the same problem. +While this is true from the point of view of the manner in which a message spends +its waiting time, as mechanisms, however, they belong to different categories. +Mutiny is a library for composing asynchronous operations. A `Uni` is a lazy +description of what must happen, it executes nothing before a subscriber appears, +and its steps run on whichever thread subscribes to it or delivers its item. +A virtual thread, by contrast, is a unit of execution provided by the JVM, and +it knows nothing of the operations it carries. The first concerns the composition +of the work, and the second concerns what executes it. + +The annotation `@RunOnVirtualThread` directs each message to a new virtual thread, +whose code calls the blocking client in the most traditional manner. While this call +waits for the answer, the JVM parks the virtual thread and releases its carrier, an +ordinary platform thread that may then execute another virtual thread. When the answer +arrives, the virtual thread resumes at the following statement. The annotation +`@Blocking("alerts")` associates the method with a named worker, whose only purpose +here is to carry the concurrency limit shown in the following configuration. + +[source,properties] +---- +mp.messaging.incoming.signals.failure-strategy=dead-letter-queue +mp.messaging.incoming.signals.dead-letter-queue.value.serializer=io.quarkus.kafka.client.serialization.JsonbSerializer +smallrye.messaging.worker.alerts.max-concurrency=${ALERT_MAX_CONCURRENCY:32} +quarkus.rest-client.alert.connection-pool-size=${ALERT_POOL:${ALERT_MAX_CONCURRENCY:32}} +quarkus.rest-client.alert.url=${ALERT_URL:http://localhost:9000/alerts} +---- + +image::08-kafka-alert.png[Sequence diagram of the alert consumer] + +This arrangement has three consequences. + +The first consequence is that the application must now limit its concurrency explicitly. + +Virtual threads remove the bound that a +worker pool used to impose, and a webhook, like any dependency, has a limited capacity. +The Quarkus default is a limit of 1024 concurrent virtual threads for such methods. This +service lowers it to 32 through the property +`smallrye.messaging.worker.alerts.max-concurrency`, a value that the environment variable +`ALERT++_++MAX++_++CONCURRENCY` can override. The connection pool of the REST client receives the +same size of 32. The following table reports the publication of bursts of signals toward a +webhook answering after a fixed delay. Its values are chosen in order to expose each limit in +turn, since a burst smaller than a limit cannot reveal this limit. Most rows thus use 64 signals, +twice the configured limit, and a connection pool of 4096 serves to remove the pool from the +measurement. + +[cols=",,,,,,",options="header",] +|=== +|Consumer annotations |Maximum of concurrent virtual threads |Connection pool |Signals |Webhook delay |Peak of concurrent calls |Total duration +|`@Blocking` |not applicable, sequential processing on a worker thread |4096 |64 |500 ms |1 |32.39 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |4 |4096 |64 |500 ms |4 |8.19 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |8 |4096 |64 |500 ms |8 |4.14 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |32 |4096 |64 |500 ms |32 |1.13 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |32 |32 |64 |500 ms |32 |1.13 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |32 |8 |64 |500 ms |8 |4.12 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |1024 |50 |200 |500 ms |50 |2.17 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |1024 |50 |512 |500 ms |not logged, since 12 alerts fail |not logged +|`@RunOnVirtualThread`, `@Blocking("alerts")` |1024 |50, with a timeout of 9 s |512 |500 ms |50 |5.66 s +|`@RunOnVirtualThread`, `@Blocking("alerts")` |1024 |4096 |2048 |2 s |1024 |5.01 s +|`@RunOnVirtualThread` |1024, the default |4096 |2048 |2 s |1024 |5.01 s +|=== + +The data in the table above should be read as follows: for example, the 1st line +is saying that a consumer annotated with `@Blocking`, consumes 64 signals in +32.39s, with a webhook delay of 500 ms and an HTTP connection pool is of 4096. + +These figures come from single runs on one machine, and they do not constitute a +performance claim. Their interest lies in the shape. The durations follow from the batches of +concurrent calls. With a limit of 4, the 64 signals form 16 successive batches of 500 ms, +hence approximately 8 s, whereas a limit of 32 requires 2 batches and sequential processing +requires 64. + +The peak is the lowest of the limits in force. With a pool of 8, the peak falls to 8 although +the service permits 32 virtual threads, and no error discloses this reduction. The value of +50 in the table is the default size of the pool, which a run omitting the property established +with a peak of exactly 50. + +The 8th line of the table shows 12 failures. This is expected as the limit of +1024 permits all 512 calls to start at once, whereas the pool serves only 50 of +them, and the remaining 462 wait for a free connection. This wait does not extend +indefinitely. A call awaiting a connection remains subject to the property +`quarkus.rest-client.alert.read-timeout`, set here to 5 s. Since each call occupies +its connection for 500 ms, successive groups of 50 calls obtain a connection at +0 s, at 0.5 s, and so on until 4.5 s, which amounts to 10 groups and 500 calls. +The next group would obtain its connection at 5 s, the moment when the timeout +expires. The 12 remaining calls consequently fail with the message `The timeout of 5000 ms has been exceeded when getting a connection`, a calculation that agrees +exactly with the 12 observed failures. + +The following row confirms this cause, since the same burst with a timeout of 9 s delivers all +512 alerts, with the same peak of 50, in 5.66 s. The failed alerts are not lost, because the +failure strategy routes them to the dead letter topic, as the class `SignalAlerterPoolTest` verifies +for this kind of failure. They have nevertheless not reached the webhook. This configuration of 1024 +over 50 is deliberately defective, and it justifies the choice made by the service, in which a pool +of the same size as the limit leaves no call waiting for a connection. + +The last two rows require a delay of 2 s, because the calls start at a rate of approximately +1,000 per second. With a delay of 500 ms, the first calls end before the last ones begin, and +the peak stops at 860 for reasons unrelated to any limit. With a sufficient delay, the default of +1024 proves to be exact. + +The reader may reproduce these measurements without modifying any file, since the test obtains +its values from the configuration. The environment variables `ALERT++_++MAX++_++CONCURRENCY` and +`ALERT++_++POOL` set the limit and the pool, with default values of 32 and 4096 in the test profile, +whereas `ALERT++_++BURST` and `ALERT++_++DELAY++_++MS` set the size of the burst and the delay, with default +values of 64 and 500. The following command reproduces the measurement of a limit of 1024, and the +test logs the values used, the peak and the duration. + +[source,bash] +---- +ALERT_MAX_CONCURRENCY=1024 ALERT_BURST=2048 ALERT_DELAY_MS=2000 \ + mvn test -pl finhub-kafka/finhub-kafka-alert -am \ + -Dtest='SignalAlerterTest#alert_burst_overlapsWithinConcurrencyLimit' \ + -Dsurefire.failIfNoSpecifiedTests=false +---- + +The test reports its measurement in a single line of log, such as the following one, which the +other messages of the build tend to bury. + +.... +Burst of 2048 signals, limit 1024, pool 4096, delay 2000 ms: peak of 1024 concurrent calls, 4867 ms +.... + +Appending `++|++ grep "Burst of"` to the command displays this line alone, at the cost of hiding the +rest of the output, including the diagnosis of a failure. The line also remains in the report of +the test after the build, from which the following command extracts it. + +[source,shell] +---- +grep -o "Burst of[^&<]*" \ + finhub-kafka/finhub-kafka-alert/target/surefire-reports/TEST-fr.simplex_software.workshop.reactive_messaging.kafka.alert.SignalAlerterTest.xml +---- + +The test expects the peak to equal the lowest of the limit, the pool and the burst. The burst of +512 signals with a timeout of 5 s consequently causes the test to fail, since 12 alerts never reach +the webhook, and the test logs its figures only after the arrival of every expected alert. The timeout +of 9 s results from the environment variable `QUARKUS++_++REST++_++CLIENT++_++ALERT++_++READ++_++TIMEOUT=9000`. The +first and the last rows alone require a modification of the source code, because they result from +different annotations. + +The second consequence, which is the price of the first, is that the alerts lose +the order of the topic. + +The Quarkus +documentation states that `@RunOnVirtualThread` "enforces concurrent message processing +without preserving the order". An execution against a real broker +confirmed this on its very first attempt, since an alert for `MSFT` reached the webhook +before the alert for `AAPL` that had been published before it, from a topic with a single +partition. Kafka guarantees the order of the records up to their delivery to the consumer, and the +consumer alone determines what becomes of this order afterward. Concurrent processing abandons +it, which this service can tolerate because each alert stands alone. The class `QuoteProcessor` +of section 5.5 could not tolerate it, because its evaluator compares each quote with the previous +one. This is the reason why it processes its quotes sequentially and carries no +`@RunOnVirtualThread`. With this annotation, it would derive perfectly formatted and entirely +wrong signals. A receiver of these alerts must equally rely on the +content of each one rather than on its position. + +As recommended by the section 5.5, this service uses the `dead-letter-queue` +strategy. Which allows us to notice a third consequence of the concurrent +processing: a failed alert or a malformed record reaches the dead letter topic +without stopping the consumer. Accordingly, a webhook that answers with an error +produces a negative acknowledgment and the signal is thereby retained on the +topic `dead-letter-topic-signals`. + +Concurrent processing also obliges the connector to acknowledge out of order, +and the `throttled` strategy commits only the offsets acknowledged in sequence. +One detail was observed in this context. When the last record of the topic +`signals` is one whose processing failed, its consumer group reports a lag of 1, +although the record has been processed. The commit occurs as soon as a further +record of `signals` has been processed and a restart at that point delivered +no alert twice. The delivery nevertheless remains at least once, so that a webhook +may receive the same alert twice. In our tests, WireMock which is our webhook, +simply records each request and thus accepts such a duplicate as a further alert. +A real receiver would have to discard the duplicate somehow. + +==== The organization of the tests + +Each test places itself at both ends of the service, which stays unchanged in +the middle. On the input side, the test publishes signals to the topic `signals`. +On the output side, it replaces the external recipient of the alerts by a WireMock +server, which answers each request and keeps a journal of all the received ones. +Between the two, the service performs its ordinary work, reading each record, +calling the webhook on a virtual thread and acknowledging the record. + +A test proceeds in four stages. It first prepares the webhook, by clearing its +journal, by restoring a default answer with the status 204, and, when required, +by programming a delay or an error for the symbol that this test uses. It then +publishes its signals, each bearing the same symbol, which isolates them from +the ones used by other tests. The service consumes these records and calls the +webhook, and every failed record is copied to the topic `dead-letter-topic-signals`. +The test finally examines the two places where results can appear, namely the +journal of WireMock and the dead letter topic. The following sequence diagram +traces this course. + +image::09-kafka-alert-tests.png[Sequence diagram of the course of a test] + +There are five test classes, as shown in the table below, having in total more +than 300 lines of code. This might seem disproportionate for a use case requiring +much less than that but this apparent complexity comes from the necessity to +observe three properties: + +* the kind of thread that performs each call; +* the number of calls in progress at the same moment; +* the fate of the records that fail. + +Each of the following classes contributes to one of these observations. + +[cols=",",options="header",] +|=== +|Class |Responsibility +|`WireMockWebhook` |Starts the simulated webhook and supplies its URL to the application +|`CallerThreadFilter` |Reports to the webhook the kind of thread making each call +|`AlertBurst` |Gathers the operations shared by the two test classes +|`SignalAlerterTest` |Verifies the service with its own configuration, in 7 tests +|`SignalAlerterPoolTest` |Verifies the service with a pool smaller than the limit, in 2 tests +|=== + +The tests are annotated with the Quarkus annotation `@QuarkusTest` which starts +the application inside the test JVM, Dev Services starts a Kafka broker in a +container, and the class `KafkaCompanion` publishes and reads records in the +manner of any external producer or consumer. A record therefore traverses the +real Kafka connector, the real deserializer, a real virtual thread, and the real +REST client, which emits a real HTTP request. Only the recipient of this request +is simulated, by the following class. + +[source,java] +---- +public class WireMockWebhook implements QuarkusTestResourceLifecycleManager +{ + static WireMockServer SERVER; + + @Override + public Map start() + { + SERVER = new WireMockServer(WireMockConfiguration.options().dynamicPort() + .asynchronousResponseEnabled(true).asynchronousResponseThreads(8).containerThreads(64).jettyAcceptQueueSize(4096)); + SERVER.start(); + return Map.of("quarkus.rest-client.alert.url", SERVER.baseUrl()); + } +} +---- + +Quarkus invokes the method `start()` before starting the application, and the +map that it returns supplies configuration properties, which here direct the +REST client toward the simulated server. + +All the tests share one topic and one webhook. Each test therefore publishes +signals bearing its own symbol, such as `FLAT` or `SLOW`, and the method +`AlertBurst.alerts(symbol)` retains only the requests concerning this symbol. +Before each test, the method `resetWebhook()` clears the request journal of +WireMock and restores a default answer with the status 204. Each test has its +signals associated to a given symbol, leaving the other signals unaffected, +which allows for their separation. + +The test provides a filter of the REST client allowing to determine the kind of +thread who emitted the request received by the webhook. + +[source,java] +---- +@Provider +public class CallerThreadFilter implements ClientRequestFilter +{ + static final String HEADER = "X-Test-Caller-Thread"; + + @Override + public void filter(ClientRequestContext request) + { + request.getHeaders().putSingle(HEADER, Thread.currentThread().isVirtual() ? "virtual" : "platform"); + } +} +---- + +Being annotated with `@Provider`, the filter applies to the REST client without +any registration, and it executes on the thread making the call. It adds a header +stating the nature of this thread, and the test then verifies the value of this +header among the requests received by WireMock. This only happens during the test +phase, the deployed service sends no such header. + +The test `alert++_++signal++_++callsWebhookOnVirtualThreadWithoutPinning` combines this +filter with a non-pinning verification. If a virtual thread becomes pinned further +to `synchronized` block with Java 21, yet `Thread.currentThread().isVirtual()` +still returns `true`, so that the filter cannot reveal the difference. The +annotation `@ShouldNotPin`, in the listing below, covers this case. Together +with `@VirtualThreadUnit` on the class, it observes the execution of the test +and makes it fail when a virtual thread has been pinned. + +[source,java] +---- +@QuarkusTest +@VirtualThreadUnit +@WithTestResource(KafkaCompanionResource.class) +@WithTestResource(WireMockWebhook.class) +class SignalAlerterTest +{ + ... + + @Test + @ShouldNotPin + void alert_signal_callsWebhookOnVirtualThreadWithoutPinning() + { + publish("THREAD", Direction.UP); + + awaitAlerts("THREAD", 1); + + SERVER.verify(postedFor("THREAD").withHeader(CallerThreadFilter.HEADER, equalTo("virtual"))); + } + ... +} +---- + +WireMock records the arrival time of each request, and the programmed delay gives +the duration of each call, so that the interval occupied by every call can be +derived after the fact. The class `AlertBurst` organizes this measurement in +four steps, which are the following: + +[arabic] +. The method `publishDelayed(...)` programs the delay for a symbol and publishes the burst as one batch. +. The method `awaitStarts(...)` waits until the expected number of requests has arrived, and it returns their sorted arrival times. +. The method `peakOverlap(...)` computes the peak. +. The method `awaitCompletion(...)` waits for the end of the last calls, which would otherwise fail during the shutdown of the application. + +[source,java] +---- + static int peakOverlap(List starts, int delayMs) + { + int peak = 0; + for (int first = 0, last = 0; last < starts.size(); last++) + { + while (starts.get(first) + delayMs <= starts.get(last)) + first++; + peak = Math.max(peak, last - first + 1); + } + return peak; + } +---- + +The method examines the arrival times in ascending order, and the index `last` +designates the call that has just started. The index `first` advances beyond +the calls already finished at this moment, that is, those whose start increased +by the delay does not exceed the current instant. The calls between the two indexes +are thus in progress simultaneously, and the largest such number constitutes +the peak. + +The tests open a consumer on the topic `dead-letter-topic-signals` through +`KafkaCompanion`, and they search this topic for the expected content. The +following table gives what each test of the module verifies. + +[cols=",",options="header",] +|=== +|Test |Verifies +|`alert++_++upOrDownSignal++_++postsToWebhook` |A signal `UP` and a signal `DOWN` each reach the webhook with their content +|`alert++_++flatSignal++_++sendsNothing` |A signal `FLAT` produces no request, while a following signal does +|`alert++_++signal++_++callsWebhookOnVirtualThreadWithoutPinning` |The call runs on a virtual thread, without pinning +|`alert++_++burst++_++overlapsWithinConcurrencyLimit` |The peak equals the lowest of the limit, the pool and the burst +|`alert++_++slowEarlierSignal++_++completesAfterLaterOne` |A later signal starts its call before the end of the slow call of an earlier signal +|`alert++_++webhookFailure++_++routesToDeadLetterTopic` |A signal refused by the webhook reaches the dead letter topic, and the next one is processed +|`alert++_++malformedRecord++_++routesToDeadLetterTopicAndProcessesNext` |A malformed record reaches the dead letter topic with its content, and the next signal is processed +|`alert++_++poolBelowLimit++_++capsConcurrencyWithoutFailure` |A pool of 8 under a limit of 32 yields a peak of exactly 8 +|`alert++_++connectionWaitExceedsTimeout++_++routesToDeadLetterTopic` |A call waiting too long for a connection reaches the dead letter topic +|=== + +Proving an absence demands some care. The signal `FLAT` is the only one for which +the service sends nothing, and its test must therefore establish that no request +occurs. The test publishes `FLAT` followed by a second signal, and waits for the +alert of this second signal. With sequential processing, this arrival would prove +that `FLAT` had already been processed without any request. With concurrent +processing, the second signal may be completed first, and its arrival proves +nothing about whether `FLAT` has been processed or not. The test consequently +verifies that no request concerning `FLAT` appears during a further period of +500 ms. This period constitutes a reasonable margin rather than a proof, since +no test can establish an absence beyond the time it observes. + +The class `SignalAlerterPoolTest` exists separately because its two tests require +another configuration, which a profile provides. + +[source,java] +---- + public static class SmallPool implements QuarkusTestProfile + { + @Override + public Map getConfigOverrides() + { + return Map.of("smallrye.messaging.worker.alerts.max-concurrency", String.valueOf(LIMIT), + "quarkus.rest-client.alert.connection-pool-size", String.valueOf(POOL)); + } + } +---- + +The second of its tests calculates its burst in order to exhaust the waiting period of 5 s. + +[source,java] +---- + @Test + void alert_connectionWaitExceedsTimeout_routesToDeadLetterTopic() + { + try (ConsumerTask deadLetters = companion.consumeStrings().fromTopics("dead-letter-topic-signals")) + { + publishDelayed(companion, "STARVED", LIMIT, 2000); + + await().atMost(Duration.ofSeconds(30)).until(() -> alerts("STARVED").size() + starved(deadLetters) == LIMIT); + + assertThat(starved(deadLetters)).isPositive(); + } + awaitCompletion(alerts("STARVED").stream().map(event -> event.getRequest().getLoggedDate().getTime()).sorted().toList(), 2000); + } +---- + +Running the application with 32 signals, a pool of 8 and a delay of 2 s, the +groups of 8 calls should obtain a connection at 0 s, at 2 s and at 4 s, and the +fourth group would obtain its own at 6 s, beyond the timeout. Then the logs would +accordingly report 8 failed calls, leaving 24 delivered alerts. But the test +nevertheless avoids asserting the exact figures above, since they depend on the +speed of the machine. It verifies instead two conditions, namely that every signal +has reached either the webhook or the dead letter topic, and that at least one +has reached the dead letter topic. The consumer opens before the publication, +so that no dead letter escapes it. + +The central test of the class `SignalAlerterTest` applies these operations, and +it is the one that produced the table of this section. + +[source,java] +---- + @Test + void alert_burst_overlapsWithinConcurrencyLimit() + { + int expected = Math.min(Math.min(limit, pool), burst); + + publishDelayed(companion, "BURST", burst, delayMs); + List starts = awaitStarts("BURST", burst, delayMs, expected); + + int peak = peakOverlap(starts, delayMs); + LOG.infof("Burst of %d signals, limit %d, pool %d, delay %d ms: peak of %d concurrent calls, %d ms", + burst, limit, pool, delayMs, peak, starts.getLast() + delayMs - starts.getFirst()); + awaitCompletion(starts, delayMs); + + assertThat(peak).isEqualTo(expected); + } +---- + +== 6. Analysis of the test results + +The complete build executes 35 tests, all of which pass, with no test skipped. +The durations below come from a single run and include the startup of the +application, of the broker where applicable, and of the instrumentation for +pinning detection. + +[cols=",,,,",options="header",] +|=== +|Test class |Module |Infrastructure |Tests |Duration +|`FinnhubQuoteTest` |`finhub-common` |none |2 |0.1 s +|`QuoteSourceTest` |`finhub-common` |none |1 |1.0 s +|`PriceMovementEvaluatorTest` |`finhub-common` |none |5 |below 0.1 s +|`QuoteMessageTest` |`finhub-common` |none |4 |below 0.1 s +|`QuotePipelineTest` |`finhub-simple` |in-memory connector |2 |1.3 s +|`QuoteMessagePipelineTest` |`finhub-msg` |in-memory connector |2 |1.3 s +|`QuoteFeedToKafkaTest` |`finhub-kafka-feed` |Kafka by Dev Services |1 |2.5 s +|`QuoteProcessorTest` |`finhub-kafka-processor` |Kafka by Dev Services |2 |2.9 s +|`SignalLoggerTest` |`finhub-kafka-logger` |Kafka by Dev Services |2 |3.8 s +|`SignalStreamResourceTest` |`finhub-kafka-logger` |Kafka by Dev Services |5 |5.8 s +|`SignalAlerterTest` |`finhub-kafka-alert` |Kafka by Dev Services, WireMock |7 |12.1 s +|`SignalAlerterPoolTest` |`finhub-kafka-alert` |Kafka by Dev Services, WireMock |2 |14.2 s +|=== + +The Kafka tests use a real broker and exchange real JSON, so that each module is +verified through its actual contract. The classes `SignalAlerterTest` and +`SignalAlerterPoolTest` take the longest, because several of their tests wait +deliberately for a slow webhook. + +A test that has never failes proves little, therefore each significant one has +been challenged in the following manner. A bug was deliberately introduced +temporarily into the code that the test protects, the test was executed in +order to verify that it failed, and the code was subsequently restored. This +was performed by hand, which offers considerably less rigor than a mutation testing +tool, yet it yielded very valuable results: + +[cols=",",options="header",] +|=== +|Deliberate damage |Result +|Remove the failure settings of the logger |the malformed record test fails +|Remove `onOverflow().drop()` |the test without demand fails +|Remove `@RunOnVirtualThread` from the alert consumer |five tests fail, among them the thread, the overlap and the ordering assertions +|Replace both annotations with a plain `@Blocking` |the same five tests fail, with a peak of 1 and a duration of 32.39 s +|Add `synchronized` around the webhook call |`@ShouldNotPin` fails, and the peak falls to 1 +|Remove `@Blocking("alerts")` |the limit assertion fails, with a peak of 64 +|Remove the failure strategy |seven tests fail, since the first failure stops the channel +|Remove the dead letter serializer |the application refuses to start +|=== + +== 7. Running the project + +This section describes how to build the project, execute its tests, and run its applications, +first on a single machine and then on a Kubernetes cluster provided by minikube. All the commands +are executed from the root of the repository, unless stated otherwise. + +=== 7.1 Prerequisites + +The project requires the following tools: + +[arabic] +. JDK 21 and Maven 3.9 or later, for the build. +. Docker, since Dev Services starts a Kafka broker in a container for every test of the Kafka modules. +. A free Finnhub API key, obtained from finnhub.io, for the applications that fetch real quotes. +. minikube, kubectl and Helm, solely for the deployment on Kubernetes. + +The applications reading Finnhub, namely `finhub-simple`, `finhub-msg` and `finhub-kafka-feed`, +obtain the key from the environment variable `FINNHUB++_++TOKEN`. Without it they start nevertheless, +and each request fails authentication, is logged, and is skipped. The variables `FINNHUB++_++SYMBOL` and +`FINNHUB++_++INTERVAL` select the followed symbol, `AAPL` by default, and the interval between two +requests, 15 seconds by default. + +=== 7.2 Building and testing + +A single command builds every module and executes the 35 tests. + +[source,shell] +---- +mvn verify +---- + +The log of this build contains errors and warnings, several with a stack trace, although every +test succeeds. They result from the negative tests, which send a quote without a price, a malformed +record, an alert refused by the webhook or a burst exceeding the connection pool, and which verify +precisely that the service logs the failure, rejects the message and continues. The Kafka clients +add a few warnings `UNKNOWN++_++TOPIC++_++OR++_++PARTITION`, which the broker resolves by creating each topic at +its first use. The verdict of the build therefore lies in the final counts of the tests and in the +line `BUILD SUCCESS`, and not in the presence of errors in the log. + +Quarkus permits setting the level of each logging category through its configuration. The Maven +profile `quiet` supplies such a configuration, the file `.mvn/quiet-logging.properties`, which turns +off the four categories emitting these messages, and the build then logs neither error nor warning while executing the same 35 tests. +Omitting the profile restores the messages. This silence applies to every message of these +categories, including a genuine error, so that it suits a demonstration rather than an investigation. + +[source,shell] +---- +mvn verify -Pquiet +---- + +The tests of one module are executed by naming this module, together with the modules on which it +depends. + +[source,shell] +---- +mvn test -pl finhub-kafka/finhub-kafka-alert -am +---- + +The measurements of the table of section 5.6 are reproduced by executing the burst test alone, +with environment variables setting the concurrency limit, the size of the connection pool, the +size of the burst and the delay of the webhook. The following command reproduces, for instance, +the measurement of a limit of 1024. + +[source,shell] +---- +ALERT_MAX_CONCURRENCY=1024 ALERT_BURST=2048 ALERT_DELAY_MS=2000 \ + mvn test -pl finhub-kafka/finhub-kafka-alert -am \ + -Dtest='SignalAlerterTest#alert_burst_overlapsWithinConcurrencyLimit' \ + -Dsurefire.failIfNoSpecifiedTests=false +---- + +The test reports its measurement in a single line of log, such as the following one, which the +other messages of the build tend to bury. + +.... +Burst of 2048 signals, limit 1024, pool 4096, delay 2000 ms: peak of 1024 concurrent calls, 4867 ms +.... + +Appending `++|++ grep "Burst of"` to the command displays this line alone, at the cost of hiding the +rest of the output, including the diagnosis of a failure. The line also remains in the report of +the test after the build, from which the following command extracts it. + +[source,shell] +---- +grep -o "Burst of[^&<]*" \ + finhub-kafka/finhub-kafka-alert/target/surefire-reports/TEST-fr.simplex_software.workshop.reactive_messaging.kafka.alert.SignalAlerterTest.xml +---- + +The variable `ALERT++_++POOL` sets the size of the connection pool in the same manner. + +The CircleCI pipeline of the directory `.circleci` executes the same +`mvn verify` on a machine executor, which provides the Docker daemon that the tests require. + +=== 7.3 Running the stages on one machine + +The first two stages run in the development mode of Quarkus, which recompiles the code at each +modification. + +[source,shell] +---- +FINNHUB_TOKEN= mvn -pl finhub-simple -am quarkus:dev +---- + +Replacing `finhub-simple` by `finhub-msg` runs the variant using envelopes. Each poll produces one +line of log, such as `AAPL 261.74 USD ▲ {plus}2.03 ({plus}0.78%)`. + +The services of stage 3 must share one broker. In development mode each of them would start its +own broker through Dev Services. In the `prod` profile they run instead against a broker started +beforehand, each one on its own HTTP port. The variable `KAFKA++_++BOOTSTRAP++_++SERVERS`, whose default value +is `localhost:9092`, designates this broker. The script `run-all.sh` performs the whole sequence. + +[source,shell] +---- +./finhub-kafka/run-all.sh +---- + +The script operates identically from any directory. It first obtains the variable `FINNHUB++_++TOKEN`, +which the feed requires, from the environment or else from the file `finhub-kafka/.env`, the same +file that the deployment on minikube uses, and it stops when neither provides it. It then starts a +Kafka broker in a container named `kafka`, replacing any previous one, builds the project without +executing the tests, and starts the logger, the processor and the feed on the ports 8080, 8081 and +8082. The script remains in the foreground until these three applications end, and it records +their process identifiers in the file `finhub-kafka/.run-all.pids`, which Git ignores. + +Two manners of stopping exist. Pressing Ctrl{plus}C in the terminal of the script stops the three +applications, which a script must request explicitly, since the commands it launches in the +background ignore this key, and the broker then remains available for a further execution. The +script `stop-all.sh`, executed from any terminal, stops the three recorded applications and removes +the broker as well. + +[source,shell] +---- +./finhub-kafka/stop-all.sh +---- + +The logger, on port 8080, publishes the signals as server sent events, which a client receives as +follows. + +[source,shell] +---- +curl -N http://localhost:8080/api/v1/signals/stream +---- + +The feed polls Finnhub every 15 seconds, so that the first signal may take as long to appear. When +the market is closed, the price remains constant, and the stream consequently delivers signals +`FLAT` with a change of zero, such as the following one. + +.... +data:{"change":0.00,"changePercent":0.00,"direction":"FLAT","price":342.37,"symbol":"AAPL"} +.... + +The alert service joins these three on port 8083, started separately, and neither Ctrl{plus}C in the +terminal of `run-all.sh` nor `stop-all.sh` concerns it, so that it is stopped by Ctrl{plus}C in its own terminal. It requires a webhook accepting `POST` requests +at the address given by `ALERT++_++URL`, and any HTTP server fulfilling this condition is suitable. In +its absence, every alert fails and reaches the topic `dead-letter-topic-signals`, which constitutes +a demonstration of a kind as well. + +[source,shell] +---- +ALERT_URL=http://localhost:9000/alerts java -Dquarkus.profile=prod -Dquarkus.http.port=8083 \ + -jar finhub-kafka/finhub-kafka-alert/target/quarkus-app/quarkus-run.jar +---- + +=== 7.4 Running stage 3 on minikube + +The deployment on minikube involves three steps. The images are first built inside the Docker +daemon of minikube, which spares the use of a registry. The Finnhub key is then written into the +file `finhub-kafka/.env`, which Git ignores. The script `install-strimzi.sh` finally installs +everything else. + +[source,shell] +---- +minikube start +eval $(minikube docker-env) +mvn package -Dquarkus.container-image.build=true + +cd finhub-kafka +echo 'FINNHUB_TOKEN=' > .env +./install-strimzi.sh +---- + +The script performs its operations in an order that matters, as follows: + +[arabic] +. It verifies that the file `.env` exists, that each module has generated its manifest, and that each image is present in the daemon of minikube. An image built in the daemon of the host would otherwise leave its pod in the state `ImagePullBackOff`, and the script prints the remedy instead. +. It creates the secret `finnhub` from the file `.env`, so that the key appears in no manifest, and the namespaces `strimzi` and `kafka`. +. It installs the Strimzi operator with Helm, waiting for its completion, so that the custom resource definitions exist before the following step uses them. +. It applies the cluster, the topics and the graphical interface of the directory `k8s`. +. It waits until the cluster is ready, since the applications would otherwise start against a broker that does not yet listen. +. It applies the manifests of the feed, the processor and the logger. + +Every operation creates or updates its resource, so that the script may be executed again without harm. +The manifests of the applications are generated by the extension `quarkus-minikube` from the +properties `quarkus.kubernetes.++*++`, each service receiving a fixed node port between 30081 and 30083. +The resources of Strimzi in `k8s` are written by hand, since the extension cannot generate custom +resources of a third party. The script deploys no alert service, because the cluster contains no +webhook to call. The signals and the topics are then observed as follows. + +[source,shell] +---- +kubectl logs -f deploy/finhub-kafka-logger +minikube service kafka-ui -n kafka --url +minikube service finhub-kafka-logger --url +---- + +The first command shows the log of the `finhub-kafka-logger` service. The second gives the address of the graphical +interface, a NodePort service on port 30080, which displays the topics, their records and the lag +of each consumer group. The third gives the address of the logger, to which the path +`/api/v1/signals/stream` gives access to the stream of signals. + +The script `uninstall.sh` removes the whole installation. + +[source,shell] +---- +./uninstall.sh +---- + +The commands of `uninstall.sh` likewise follow a necessary order, since a different order would block the removal. The topic operator places a finalizer on every topic, so the topics must +be deleted while the operator still runs, and the script consequently removes the applications, the +secret, the interface, the topics and the cluster before uninstalling the operator. It finally deletes +the namespaces and the custom resource definitions, which the chart installs without owning them, so +that a further installation starts from a clean cluster. + +== 8. Conclusions + +The MicroProfile Reactive Messaging specification fulfils its central promise. +The same processor method ran in memory and over Kafka with its body unchanged, +and the transition consisted of configuration. Its abstraction ends, however, +in case of failures, where the semantics of specific connectors become unavoidable. + +Regarding the choice between the two discussed styles, the evidence collected +here supports the following recommendations: + +[arabic] +. Prefer Reactive Messaging for streams and for temporal decoupling between services. This question is largely +independent of the concurrency model, since virtual threads offer no replacement for a broker. +. Prefer Mutiny for continuous streams with explicit back pressure. +. Prefer virtual threads for a consumer that must perform a blocking call, on the condition that the order of processing +is immaterial. Retain sequential processing wherever a message depends on the previous one. +. Whichever style is chosen, declare a concurrency limit, assert the thread in the tests, and +check the pinning hazard if running on a version earlier than JDK 24. + +The most durable conclusion concerns method rather than technology. Almost every +significant finding of this work, namely the behavior of malformed records, the +necessity of an explicit overflow policy, the loss of order and the exactness of +the concurrency limit, emerged from an experiment. The MicroProfile Reactive +Messaging specification, as well as its implementation by Quarkus, emerged from +this examination with their reputations intact. + +== References + +[arabic] +. Eclipse MicroProfile, https://download.eclipse.org/microprofile/microprofile-reactive-messaging-3.0/microprofile-reactive-messaging-spec-3.0.html[MicroProfile Reactive Messaging Specification 3.0]. +. MicroProfile, https://microprofile.io/specifications/reactive-messaging[Reactive Messaging], release history. +. SmallRye, https://smallrye.io/smallrye-reactive-messaging/latest/kafka/receiving-kafka-records/[Receiving Kafka Records]. +. SmallRye, https://smallrye.io/smallrye-mutiny/[Mutiny documentation]. +. Quarkus, https://quarkus.io/guides/messaging-virtual-threads[Virtual Threads Support for Messaging Applications]. +. OpenJDK, https://openjdk.org/jeps/444[JEP 444, Virtual Threads]. +. OpenJDK, https://openjdk.org/jeps/491[JEP 491, Synchronize Virtual Threads without Pinning]. +. https://www.amazon.fr/Reactive-Systems-Java-Event-driven-Architecture/dp/1492091723?th=1[Reactive Systems in Java by Clément Escoffier and Ken Finnigan, O'Reilly 2021] +. The accompanying source code, https://github.com/nicolasduminil/reactive-messaging[`reactive-messaging`]. diff --git a/draft/reactive-messaging-on-quarkus/reactive-messaging.jpg b/draft/reactive-messaging-on-quarkus/reactive-messaging.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fdb45bd99381cc746e2b7cf96ca2c0e9803f241 GIT binary patch literal 85839 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 Date: Fri, 13 Nov 2026 16:31:06 +0100 Subject: [PATCH 2/3] Correct the back pressure cell and the Dev Services broker explanation --- draft/reactive-messaging-on-quarkus/index.adoc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/draft/reactive-messaging-on-quarkus/index.adoc b/draft/reactive-messaging-on-quarkus/index.adoc index 2fadafad0..211d86a29 100644 --- a/draft/reactive-messaging-on-quarkus/index.adoc +++ b/draft/reactive-messaging-on-quarkus/index.adoc @@ -218,7 +218,7 @@ on virtual threads, as section 5.6 shows. |Thread serving a message |an event loop, which must remain unblocked |one virtual thread per message |Code style |a composed pipeline, each step being a callback |sequential statements and ordinary control flow |Error handling |failure operators in the pipeline |`try` and `catch` -|Back pressure |a part of the model, as in section 5.5 |absent by default, to be provided explicitly +|Back pressure |a part of the model, as in section 5.5 |demand controlled by the connector, with at most 1024 concurrent messages by default, a lower limit being configured explicitly as in section 5.6 |Streams |natural, through `Multi` |requires additional constructions |Order of the messages |preserved by default |abandoned, as section 5.6 demonstrates |Principal hazard |a blocking call stalls every request on that event loop |a `synchronized` block around I/O pins the carrier on JDK 21 @@ -1452,10 +1452,12 @@ FINNHUB_TOKEN= mvn -pl finhub-simple -am quarkus:dev Replacing `finhub-simple` by `finhub-msg` runs the variant using envelopes. Each poll produces one line of log, such as `AAPL 261.74 USD ▲ {plus}2.03 ({plus}0.78%)`. -The services of stage 3 must share one broker. In development mode each of them would start its -own broker through Dev Services. In the `prod` profile they run instead against a broker started -beforehand, each one on its own HTTP port. The variable `KAFKA++_++BOOTSTRAP++_++SERVERS`, whose default value -is `localhost:9092`, designates this broker. The script `run-all.sh` performs the whole sequence. +The services of stage 3 must share one broker. In development mode, Dev Services would provide it, +since by default it shares the container it starts among all the Quarkus applications running in +this mode. The script below uses the `prod` profile instead, which runs the packaged applications +against a broker started beforehand, each one on its own HTTP port. The variable +`KAFKA++_++BOOTSTRAP++_++SERVERS`, whose default value is `localhost:9092`, designates this broker. +The script `run-all.sh` performs the whole sequence. [source,shell] ---- From 9c85283bf078336ccc39f4610669505d56121f86 Mon Sep 17 00:00:00 2001 From: Nicolas Duminil Date: Fri, 13 Nov 2026 16:32:43 +0100 Subject: [PATCH 3/3] Show the deserialization and read timeout settings in the alert configuration --- draft/reactive-messaging-on-quarkus/index.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/draft/reactive-messaging-on-quarkus/index.adoc b/draft/reactive-messaging-on-quarkus/index.adoc index 211d86a29..ab6d878dd 100644 --- a/draft/reactive-messaging-on-quarkus/index.adoc +++ b/draft/reactive-messaging-on-quarkus/index.adoc @@ -880,11 +880,13 @@ here is to carry the concurrency limit shown in the following configuration. [source,properties] ---- +mp.messaging.incoming.signals.fail-on-deserialization-failure=false mp.messaging.incoming.signals.failure-strategy=dead-letter-queue mp.messaging.incoming.signals.dead-letter-queue.value.serializer=io.quarkus.kafka.client.serialization.JsonbSerializer smallrye.messaging.worker.alerts.max-concurrency=${ALERT_MAX_CONCURRENCY:32} quarkus.rest-client.alert.connection-pool-size=${ALERT_POOL:${ALERT_MAX_CONCURRENCY:32}} quarkus.rest-client.alert.url=${ALERT_URL:http://localhost:9000/alerts} +quarkus.rest-client.alert.read-timeout=5000 ---- image::08-kafka-alert.png[Sequence diagram of the alert consumer]