basically, you’ll need to implement the CommandRouter interface and use a static list. Somehow, you’d have to find out if the nodes in your static list are available or not, probably by pinging them. Also, you’ll need to know which commands each node supports (but maybe that’s fixed as well).
If everything is static, you wouldn’t need to implement the “updateMembership” method. It can be a no-op. The “findDestination” method should return one of the members in a static list based on consistent routing algorithm. Helper classes for that are available (see org.axonframework.commandhandling.distributed.ConsistentHash).
We have also noticed the long lag with Discovery based mechanisms. Unfortunately, this seems to be part of their design. In AxonHub, we have addressed the challenges of message routing (in a way that’s compatible with Kubernetes) and discovery is practically immediate.
Hope this helps.