Skip to content

Commit

Permalink
Update documentation for Flow APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
ozangunalp committed Feb 6, 2023
1 parent 144f3a8 commit d18181d
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 47 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ into [CDI](http://www.cdi-spec.org/) beans,or [JAX-RS](https://github.com/eclips

## Branches

* main - 4.x development stream. Uses Vert.x 4.x, Microprofile 5.x and Jakarta 9
* main - 4.x development stream. Uses Vert.x 4.x, Microprofile 5.x, Mutiny 2.x and Jakarta 9
* 3.x - Previous development stream. Uses Vert.x 4.x and Microprofile 4.x
* 2.x - Not under development anymore. Uses Vert.x 3.x and Microprofile 3.x

Expand Down
6 changes: 3 additions & 3 deletions documentation/src/main/docs/concepts/message-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ Message context works with:

However, message context are **NOT** enforced when using methods consuming or producing:

* `Multi`, `Publisher` and `PublisherBuilder`
* `Subscriber` and `SubscriberBuilder`
* `Processor` and `ProcessorBuilder`
* `Multi`, `Flow.Publisher`, `Publisher` and `PublisherBuilder`
* `Subscriber`, `Flow.Subscriber`, and `SubscriberBuilder`
* `Processor`, `Flow.Processor`, and `ProcessorBuilder`


## Under the hood
Expand Down
99 changes: 56 additions & 43 deletions documentation/src/main/docs/concepts/signatures.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,66 +4,79 @@ The following tables list the supported method signatures and indicate
the various supported features. For instance, they indicate the default
and available acknowledgement strategies (when applicable).

| Signature | Invocation time |
|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
## Method signatures to generate data

| Signature | Invocation time |
|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| `@Outgoing Publisher<Message<O>> method()` ` | Called once at *assembly* time |
| `@Outgoing Publisher<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Publisher<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Multi<Message<O>> method()` ` | Called once at *assembly* time |
| `@Outgoing Multi<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Multi<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Flow.Publisher<Message<O>> method()` ` | Called once at *assembly* time |
| `@Outgoing Flow.Publisher<O> method()` ` | Called once at *assembly* time |
| `@Outgoing PublisherBuilder<Message<O>> method()` ` | Called once at *assembly* time |
| `@Outgoing PublisherBuilder<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Message<O> method()` ` | Called for every downstream request, sequentially |
| `@Outgoing O method()` ` | Called for every downstream request, sequentially |
| `@Outgoing PublisherBuilder<O> method()` ` | Called once at *assembly* time |
| `@Outgoing Message<O> method()` ` | Called for every downstream request, sequentially |
| `@Outgoing O method()` ` | Called for every downstream request, sequentially |
| `@Outgoing CompletionStage<Message<O>> method()` ` | Called for every downstream request, sequentially (After the completion of the last returned CompletionStage) |
| `@Outgoing CompletionStage<O> method()` ` | Called for every downstream request, , sequentially (After the completion of the last returned CompletionStage) |
| `@Outgoing CompletionStage<O> method()` ` | Called for every downstream request, , sequentially (After the completion of the last returned CompletionStage) |
| `@Outgoing Uni<Message<O>> method()` ` | Called for every downstream request, sequentially (After the completion of the last returned Uni) |
| `@Outgoing Uni<O> method()` ` | Called for every downstream request, , sequentially (After the completion of the last returned Uni) |
| `@Outgoing Uni<O> method()` ` | Called for every downstream request, , sequentially (After the completion of the last returned Uni) |

Method signatures to generate data
## Method signatures to consume data

| Signature | Invocation time | Supported Acknowledgement Strategies |
|-------------------------------------------------------|--------------------------------------------------|-------------------------------------------------|
| `@Incoming void method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING |
| Signature | Invocation time | Supported Acknowledgement Strategies |
|--------------------------------------------------------|--------------------------------------------------|-------------------------------------------------|
| `@Incoming void method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING |
| `@Incoming CompletionStage<?> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING |
| `@Incoming CompletionStage<?> method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, PRE_PROCESSING, NONE |
| `@Incoming CompletionStage<?> method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, PRE_PROCESSING, NONE |
| `@Incoming Uni<?> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING |
| `@Incoming Uni<?> method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, PRE_PROCESSING, NONE |
| `@Incoming Subscriber<Message<I>> method()` | Called once at *assembly* time | *MANUAL*, POST_PROCESSING, NONE, PRE_PROCESSING |
| `@Incoming Subscriber<I> method()` | Called once at *assembly* time | *POST_PROCESSING*, NONE, PRE_PROCESSING |
| `@Incoming Uni<?> method(I p)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, PRE_PROCESSING, NONE |
| `@Incoming Subscriber<Message<I>> method()` | Called once at *assembly* time | *MANUAL*, POST_PROCESSING, NONE, PRE_PROCESSING |
| `@Incoming Subscriber<I> method()` | Called once at *assembly* time | *POST_PROCESSING*, NONE, PRE_PROCESSING |
| `@Incoming Flow.Subscriber<Message<I>> method()` | Called once at *assembly* time | *MANUAL*, POST_PROCESSING, NONE, PRE_PROCESSING |
| `@Incoming Flow.Subscriber<I> method()` | Called once at *assembly* time | *POST_PROCESSING*, NONE, PRE_PROCESSING |
| `@Incoming SubscriberBuilder<Message<I>, ?> method()` | Called once at *assembly* time | *MANUAL*, POST_PROCESSING, NONE, PRE_PROCESSING |
| `@Incoming SubscriberBuilder<I, ?> method()` | Called once at *assembly* time | *MANUAL*, POST_PROCESSING, NONE, PRE_PROCESSING |

Method signatures to consume data
## Method signatures to process data

| Signature | Invocation time | Supported Acknowledgement Strategies | Metadata Propagation |
|-----------------------------------------------------------------------------|--------------------------------------------------|-----------------------------------------|----------------------|
| `@Outgoing @Incoming Message<O> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming O method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming CompletionStage<Message<O>> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming CompletionStage<O> method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming Uni<Message<O>> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming Uni<O> method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming Processor<Message<I>, Message<O>> method()` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Processor<I, O> method()` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming ProcessorBuilder<Message<I>, Message<O>> method()` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming ProcessorBuilder<I, O> method()` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Publisher<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Publisher<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| `@Outgoing @Incoming Multi<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Multi<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| `@Outgoing @Incoming PublisherBuilder<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming PublisherBuilder<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| Signature | Invocation time | Supported Acknowledgement Strategies | Metadata Propagation |
|---------------------------------------------------------------------------|--------------------------------------------------|-----------------------------------------|----------------------|
| `@Outgoing @Incoming Message<O> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming O method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming CompletionStage<Message<O>> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming CompletionStage<O> method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming Uni<Message<O>> method(Message<I> msg)` | Called for every incoming message (sequentially) | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming Uni<O> method(I payload)` | Called for every incoming payload (sequentially) | *POST_PROCESSING*, NONE, PRE_PROCESSING | automatic |
| `@Outgoing @Incoming Processor<Message<I>, Message<O>> method()` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Processor<I, O> method()` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Flow.Processor<Message<I>, Message<O>> method()` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Flow.Processor<I, O> method()` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming ProcessorBuilder<Message<I>, Message<O>> method()` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming ProcessorBuilder<I, O> method()` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Publisher<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Publisher<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| `@Outgoing @Incoming Multi<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Multi<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| `@Outgoing @Incoming Flow.Publisher<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming Flow.Publisher<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |
| `@Outgoing @Incoming PublisherBuilder<Message<O>> method(Message<I> msg)` | Called once at *assembly* time | *MANUAL*, PRE_PROCESSING, NONE | manual |
| `@Outgoing @Incoming PublisherBuilder<O> method(I payload)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | automatic |

Method signatures to process data
## Method signatures to manipulate streams

| Signature | Invocation time | Supported Acknowledgement Strategies | Metadata Propagation |
|-------------------------------------------------------------------------------------------------|--------------------------------|--------------------------------------|----------------------|
| Signature | Invocation time | Supported Acknowledgement Strategies | Metadata Propagation |
|---------------------------------------------------------------------------------------------|--------------------------------|--------------------------------------|----------------------|
| `@Outgoing @Incoming Publisher<Message<O>> method(Publisher<Message<I>> pub)` | Called once at *assembly* time | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming Publisher<O> method(Publisher<I> pub)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Publisher<O> method(Publisher<I> pub)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Multi<Message<O>> method(Multi<Message<I>> pub)` | Called once at *assembly* time | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming Multi<O> method(Multi<I> pub)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Multi<O> method(Multi<I> pub)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming Flow.Publisher<Message<O>> method(Flow.Publisher<Message<I>> pub)` | Called once at *assembly* time | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming Flow.Publisher<O> method(Flow.Publisher<I> pub)` | Called once at *assembly* time | *PRE_PROCESSING*, NONE | not supported |
| `@Outgoing @Incoming PublisherBuilder<Message<O>> method(PublisherBuilder<Message<I>> pub)` | Called once at *assembly* time | *MANUAL*, NONE, PRE_PROCESSING | manual |
| `@Outgoing @Incoming PublisherBuilder<O> method(PublisherBuilder<I> pub)` | Called once at *assembly* time | NONE, PRE_PROCESSING | not supported |
| `@Outgoing @Incoming PublisherBuilder<O> method(PublisherBuilder<I> pub)` | Called once at *assembly* time | NONE, PRE_PROCESSING | not supported |

Method signatures to manipulate streams

!!!important
When processing `Message`, it is often required to *chain* the incoming
Expand Down

0 comments on commit d18181d

Please sign in to comment.