Skip to content

Commit 7146c9f

Browse files
Merge pull request #341 from AxonIQ/feature/console-teasers
Add information about AxonIQ Console to the reference guide
2 parents 33304bd + 9b32b05 commit 7146c9f

File tree

9 files changed

+42
-20
lines changed

9 files changed

+42
-20
lines changed

.gitbook/assets/console/flow.png

116 KB
Loading

.gitbook/assets/console/graphs.png

85.2 KB
Loading

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ Axon provides an innovative and powerful way of sensibly evolving to event-drive
1010
Please visit [the AxonIQ website](https://axoniq.io/) to learn more about AxonIQ and the Axon community.
1111
There, you will find information about Axon training, support options, upcoming and past events.
1212

13-
> Breaking Changes in Axon Framework 4.7!
14-
>
15-
> Against our normal approach towards minor releases, we sadly had to introduce breaking changes between Axon Framework 4.6 and 4.7.
16-
> Our apologies for this.
17-
>
18-
> To help you with your upgrade we have constructed a dedicated page [here](axon-framework/upgrading-to-4-7.md) that helps you on your path to upgrade to 4.7.
19-
> If you find any irregularities concerning your upgrade, be sure to reach out to us!
13+
> **Monitoring with AxonIQ Console**
14+
>
15+
> We have built a platform that makes it very easy to monitor your Axon Framework applications. It measures everything in your applications, aggregates, metrics and processors.
16+
> ![../../.gitbook/assets/console/graphs.png](../../.gitbook/assets/console/graphs.png)
17+
> You can find more information on our [product page](https://www.axoniq.io/products/axoniq-console) or [log in directly](https://console.axoniq.io/).
2018
2119
## How to use this guide
2220

axon-framework/events/event-processors/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,11 @@ Once you resolve the problem that led to dead lettering events, we can start pro
457457
We recommend using the `SequencedDeadLetterProcessor` interface for this, as it processes an entire dead-letter _sequence_ instead of single dead-letter entries.
458458
It will thus ensure the event order is maintained during the retry.
459459

460+
> **Processing Dead-Letters with AxonIQ Console**
461+
>
462+
> With AxonIQ Console you can see and manage the items in your Dead-Letter Queue, as well as receive notifications when the queues contain items.
463+
> You can find more information on our [product page](https://www.axoniq.io/products/axoniq-console) or [log in directly](https://console.axoniq.io/).
464+
460465
The `SequencedDeadLetterProcessor` provides two operations to process dead letters:
461466

462467
1. `boolean processAny()` - Process the oldest dead-letter sequence.
@@ -740,3 +745,7 @@ It is the `RollbackConfiguration` that decide when a [Unit of Work](../../messag
740745
The default `RollbackConfiguration` is to rollback on any type of `Throwable`; the [Unit of Work](../../messaging-concepts/unit-of-work.md) page describes the other options you can choose.
741746
To adjust the default behaviour, the `registerRollbackConfiguration(String, Function<Configuration, RollbackConfiguration>)` function should be invoked on the `EventProcessingConfigurer`.
742747

748+
### Configuration Overview
749+
Sometimes it can be hard to understand the current active configuration. For that, you can easily see an overview of the configuration of each Event Processor in [AxonIQ Console](https://www.axoniq.io/products/axoniq-console), once your application is connected to it. In addition the AxonIQ Console provides many more features for processors, such as being able to scale your event processor, and monitor the message handlers of your applications.
750+
751+

axon-framework/events/event-processors/streaming.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,10 +1304,11 @@ In turn, we can reduce the number of segments again if the load on the streaming
13041304
To change the number of segments at runtime, the _split and merge_ operations should be used.
13051305
Splitting and merging allow you to control the number of segments dynamically.
13061306

1307-
There are roughly two approaches to adjust the number of segments for a streaming processor:
1307+
There are roughly three approaches to adjust the number of segments for a streaming processor:
13081308

13091309
1. Through the [Axon Server](../../../axon-server/introduction.md) Dashboard with the split and merge buttons
1310-
2. Directly on a `StreamingEventProcessor`, with the `splitSegment(int segmentId)` and `mergeSegment(int segmentId)` methods
1310+
2. Through the [AxonIQ Console](https://www.axoniq.io/products/axoniq-console) processor detail page, where you can also configure your segments to scale automatically.
1311+
3. Directly on a `StreamingEventProcessor`, with the `splitSegment(int segmentId)` and `mergeSegment(int segmentId)` methods
13111312

13121313
When Axon Server is in place, we recommend using option one since it is easiest to use.
13131314
Whenever Axon Server is not used, and you want to adjust the number of segments, the split and merge methods should be accessible from within your application.
@@ -1465,10 +1466,10 @@ class StreamingProcessorController {
14651466
> If you are in a [multi-node](#multi-node-processing) scenario, that means *all* nodes should shut down the `StreamingEventProcessor`.
14661467
> Otherwise, another node will pick up the segments released by the inactive processor instance.
14671468
>
1468-
> Being able to shut down or start up all streaming processor instances is most easily achieved through the [Axon Server](../../../axon-server/introduction.md) Dashboard.
1469+
> Being able to shut down or start up all streaming processor instances is most easily achieved through the [Axon Server](../../../axon-server/introduction.md) Dashboard or through connecting your application to [AxonIQ Console](https://www.axoniq.io/products/axoniq-console).
14691470
> The application's dashboard provides a "start" and "stop" button, which will start/stop the processor on every node.
14701471
>
1471-
> When Axon Server is not used, you should construct a custom endpoint in your application.
1472+
> When not using Axon Server or AxonIQ Console, you should construct a custom endpoint in your application.
14721473
> The `StreamingProcessorService` sample shared above would be ideal for adding a start and stop method.
14731474
14741475
### Replay API
@@ -1544,7 +1545,6 @@ The `CardSummaryProjection` shows a couple of interesting things to take note of
15441545
The type of the `resetContext` is up to the user and is the same context as is used for the `@ResetHandler` (see 4.).
15451546
The type of the `resetContext` has to match the parameter's, or it will be null.
15461547

1547-
15481548
## Multiple Event Sources
15491549

15501550
You can configure a Streaming Event Processor to use multiple sources to process events from.

axon-framework/messaging-concepts/README.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@
22

33
One of the core concepts in Axon is messaging. All communication between components is done using message objects. This gives these components the location transparency needed to be able to scale and distribute these components when necessary.‌
44

5-
Although all these messages implement the `Message` interface, there is a clear distinction between the different types of messages and how they are treated.‌
6-
7-
All messages contain a payload, meta data and unique identifier. The payload of the message is the functional description of what the message means. The combination of the class name of this object and the data it carries, describe the application's meaning of the message. The metadata allows you to describe the context in which a message is being sent. You can, for example, store tracing information, to allow the origin or cause of messages to be tracked. You can also store information to describe the security context under which a command is being executed.‌
8-
9-
[Axon Coding Tutorial \#2: - The Core API](https://youtu.be/vnCxjWZrrk0)
5+
Although all these messages implement the `Message` interface, there is a clear distinction between the different types of messages and how they are treated.
106

117
> **Note**
128
>
13-
> Note that all messages are immutable. Storing data in a message actually means creating a new message based on the previous one, with extra information added to it. This guarantees that messages are safe to use in a multi-threaded and distributed environment.
9+
> Note that all messages are immutable. Storing data in a message actually means creating a new message based on the previous one, with extra information added to it. This guarantees that messages are safe to use in a multi-threaded and distributed environment.‌
10+
11+
All messages contain a payload, meta data and unique identifier. The payload of the message is the functional description of what the message means. The combination of the class name of this object and the data it carries, describe the application's meaning of the message. The metadata allows you to describe the context in which a message is being sent. You can, for example, store tracing information, to allow the origin or cause of messages to be tracked. You can also store information to describe the security context under which a command is being executed.
12+
13+
AxonIQ Console can visualize this flow of messages for you without any additional configuration.
14+
![../../.gitbook/assets/console/graphs.png](../../.gitbook/assets/console/flow.png)
15+
You can find more information on our [product page](https://www.axoniq.io/products/axoniq-console) or [log in directly](https://console.axoniq.io/).
16+
1417

18+
## Tutorial <a id="tutorial"></a>
19+
We have recorded a tutorial video on Core API. You can find this at [Axon Coding Tutorial \#2: - The Core API](https://youtu.be/vnCxjWZrrk0)
1520
1621

1722
## Commands <a id="commands"></a>

axon-framework/monitoring/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
The ability to monitor and measure what is going on is very important.
44
This section contains all information regarding metrics, tracing and monitoring of your Axon Framework application.
55

6+
> **Monitoring with AxonIQ Console**
7+
>
8+
> We have built a platform that makes it very easy to monitor your Axon Framework applications. It measures everything in your applications, aggregates, metrics and processors.
9+
> ![../../.gitbook/assets/console/graphs.png](../../.gitbook/assets/console/graphs.png)
10+
> You can find more information on our [product page](https://www.axoniq.io/products/axoniq-console) or [log in directly](https://console.axoniq.io/).
11+
612
A summary of the various subsections is given below.
713

814
| Subsection | Purpose |

axon-framework/tuning/event-processing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ Typically, application components contain one or more[ Event Processors](../even
44

55
## Increasing and decreasing segment counts <a id="increasing-and-decreasing-segment-counts"></a>
66

7-
Tracking Event Processors that handle events in multiple threads use segments to separate the events in the stream across these threads in a reliable way. However, especially when these threads are spread across multiple instances of a component, and the number of instances changes, it may be useful to scale the number of segments accordingly.
7+
Streaming Event Processors that handle events in multiple threads use segments to separate the events in the stream across these threads in a reliable way. However, especially when these threads are spread across multiple instances of a component, and the number of instances changes, it may be useful to scale the number of segments accordingly.
88

9-
To this end, Axon Framework provides a [split and merge API](../events/event-processors/streaming.md#splitting-and-merging-segments). This API can be utilized directly via a client configuration or through Axon Server, where the latter takes required coordination into account.
9+
To this end, Axon Framework provides a [split and merge API](../events/event-processors/streaming.md#splitting-and-merging-segments). This API can be utilized directly via a client configuration, through Axon Server, or [AxonIQ Console](https://www.axoniq.io/products/axoniq-console), where the latter two takes required coordination into account.
1010

1111
### Segment tuning through Axon Framework <a id="segment-tuning-through-axon-framework"></a>
1212

axon-framework/tuning/event-snapshots.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ When aggregates live for a long time, and their state constantly changes, they w
66

77
For example, items in stock tend to change quite often. Each time an item is sold, an event reduces the stock by one. Every time a shipment of new items comes in, the stock is incremented by some larger number. If you sell a hundred items each day, you will produce at least 100 events per day. After a few days, your system will spend too much time reading in all these events just to find out whether it should raise an "ItemOutOfStockEvent". A single snapshot event could replace a lot of these events, just by storing the current number of items in stock.
88

9+
> **To measure it to know**
10+
>
11+
> [AxonIQ Console](https://www.axoniq.io/products/axoniq-console) can measure the amount of events that were loaded during command handling, so you know if you need to create snapshots or not!. It's also able to track many more interesting metrics, such as the load time of the aggregate, and the time it took to store the events.
12+
913
### Creating a snapshot
1014

1115
Snapshot creation can be triggered by a number of factors, for example: the number of events created since the last snapshot, the time to initialize an aggregate exceeds a certain threshold, time-based, etc. Currently, Axon provides a mechanism that allows you to trigger snapshots based on an event count threshold.

0 commit comments

Comments
 (0)