Axon Framework Operations

Axoniq Platform can manage Axon Framework applications. To achieve this, it allows the platform to call your applications remotely. There is a specific contract of the actions that can be called.

Event processors

Event processors can be managed from Axoniq Platform. There are several actions that can be executed:

Route Description

processor-command-start

Start an event processor (if not started yet)

processor-command-stop

Pause an event processor (if not paused yet)

processor-command-split-segment

Tells the processor to split a segment in two, parallelizing the processing of the segment.

processor-command-merge-segment

Tells the processor to merge two segments into one, reducing the parallelization of the processing.

event-processor-claim

Tells the processor to claim a segment for processing. This is used to distribute the segments between processors.

processor-command-release-segment

Tells the processor to stop processing a segment and blocklist it for some seconds so another processor can take over.

processor-command-reset

Tells the processor to reset the position of the processor to the given position.

event-processor-status

Get the status of the event processor. Used by the server during actions to refresh data more often than once every 5 seconds.

event-processor-segments

Returns the full list of segments owned by a processor. Used by the platform when more detailed segment information is required than what is included in the periodic processor report.

Some actions in this list may be called automatically by Axoniq Platform if configured to do so by the user. For example, if automatic scaling of segments is enabled, the processor-command-split-segment and processor-command-merge-segment actions will be called by the console itself when needed to control the number of segments.

Dead letters

Dead letters can be managed from Axoniq Platform. There are several operations that can be done:

Route Description

dlq-query-dead-letters

Queries the dead letters for a processing group, paginated. Will only return sensitive data if configured to do so. See below for configuration.

dlq-command-delete-sequence

Deletes a sequence of dead letters for a processing group.

dlq-command-delete-letter

Deletes a specific dead letter.

dlq-command-process

Tells the application to retry a dead letter.

dlq-command-process-all-sequences

Tells the application to retry all dead letters in all sequences for a processing group.

dlq-command-delete-all-sequences

Tells the application to delete all dead letters in all sequences for a processing group.

During the configuration of the client via the web interface, you will be able to choose various modes for the dead-letter queue (DLQ) data shown. The modes are:

Mode

Description

NONE

No data is shown at all, except the number of dead letters.

MASKED

Message payloads and diagnostic data won’t be shown. The aggregate identifier will be hashed. The event type and the optional exception will be shown as-is.

LIMITED

Message payloads won’t be shown. The aggregate identifier will be shown as-is. From the diagnostics only the keys set in the axoniq.console.dlq-diagnostics-whitelist will be shown.

FULL

All the message payloads, aggregate identifier, and the diagnostics data will be visible.

In the absence of a configuration, the default mode is NONE.

Management

There are several management operations that can be used by Axoniq Platform:

Route Description

client-heartbeat

Bidirectional liveness check. Both the client and the platform expose this route so either side can ping the other.

client-settings

Settings exchange route used by Axon Framework versions below 1.7.0. The client can pull its settings from the platform, and the platform can push updated settings to the client over the same route. Settings include the heartbeat interval, heartbeat timeout, and the report intervals for handler and processor metrics.

client-settings-v2

Same as client-settings, but for Axon Framework 1.7.0 and higher. Adds the application metric report interval to the v1 payload.

client-status

Pushed from Axoniq Platform to the client when its operational status changes. Used to enable or disable reporting from the client, for example when the workspace exceeds its application limit or its credit allowance.

client-log

Pushed from Axoniq Platform to the client to write a log message into the client application’s logger. Used to surface platform-side notifications (such as exceeded application limits) directly in the application’s own logs.

client-thread-dump

Requests a thread dump from a specific instance of the client application. Used by the diagnostics view in Axoniq Platform.

Aggregates

Axoniq Platform has several functions related to aggregates. These are no longer included since version 2.0.0 of the connector for Axon Framework 5 and higher, as aggregates no longer exist.

There are several actions that can be executed:

Route Description

domain-events

Retrieves the domain events for a given aggregate identifier.

entity-state-at-sequence

Retrieves the aggregate state at a certain sequence by creating a snapshot and serializing.