Axon Event-Cluster config issue logging

Hi,

Is there a way to identify/log the events which are not associated with ANY cluster?

We have a distributed setup and as the number of configurations increase, it’s hard to keep track if the configuration is intact (until we find a bug).

i.e simple warn/error log message to identify the below scenarios:

  • Event published to AxonEventBus, but no cluster configured for the event (could be incorrect routingKey config)

In case the event reaches the cluster and not listened by any Handler, we can see it in the RabbitMQ console. But the above case doesnt get trapped anywhere.

Thanks,
Jebu.

Hi,

how could you do that in a distributed system? It’s very normal of certain instances not to handle an event. The system would become very chatty and complex if each incoming unhandled event requires confirmation of being handled in one of the other instances.

Cheers,

Allard

Is it possible to enable something like an ‘Unprocessed Event Queue’ (Auto-delete) which can be a storehouse of all events which didnt get picked up by any EH (either there is no matching routing-key or there is no EventHandler defined for this Event type).

The usecase is, during application-configuration, it’s easy to miss out on these which will get caught after several layers of testing. The sameway axon determines on init() that there is no command-handler for a given command, it’ll be a nice-to have feature.

Thanks,
Jebu.

Hi,

the issue lays in the fact that it’s perfectly normal for an instance not to handle a specific type of event. So any type of “Warning” would result in a massive number of false positives. Furthermore, it is not easy to discover whether an event is being handled on any node, as handling can be done asynchronously.
I just see too many technical and conceptual issues with this for anything generic to be made for Axon. However, an application specific solution could work for your case.

Cheers,

Allard

Got it. If so, what would be the suitable hook-point to do this in an AMQP based implementation? Any pointers, so that we can build a simple logging mechanism as an alert for our application.

Thanks,
Jebu.

Hi,

one way I could think of, is to wrap the Cluster in an implementation that wraps an event message and records whether getPayload() is invoked on that message. If not, no handler was interested in that message.

Cheers,

Allard