Hi,
We are trying to setup distributed command bus using spring-cloud. We are using spring cloud kubernetes for service discovery. The configuration works fine with minikube(single node) but gives No node known to accept[command] when there are multiple nodes.
We have defined all these beans:
@Bean
public CommandBusConnector springHttpCommandBusConnector(
@Qualifier("localSegment") CommandBus localSegment,
RestOperations restOperations,
Serializer serializer) {
log.info("init CommandBusConnector");
localSegment.registerHandlerInterceptor(new BeanValidationInterceptor<>());
return SpringHttpCommandBusConnector.builder()
.localCommandBus(localSegment)
.restOperations(restOperations)
.serializer(serializer)
.build();
}
@Primary // to make sure this CommandBus implementation is used for autowiring
@Bean
public DistributedCommandBus springCloudDistributedCommandBus(
CommandRouter commandRouter,
CommandBusConnector commandBusConnector) {
log.info("init DistributedCommandBus");
return DistributedCommandBus.builder()
.commandRouter(commandRouter)
.connector(commandBusConnector)
.build();
}
@Bean
public RestOperations restOperations() {
log.info("init RestOperations");
return new RestTemplate();
}
@Bean
public RestTemplate restTemplate() {
log.info("init RestTemplate");
return new RestTemplate();
}
@Bean
public CommandRouter springCloudHttpBackupCommandRouter(
DiscoveryClient discoveryClient,
RestTemplate restTemplate,
Registration localServiceInstance,
@Value("${axon.distributed.spring-cloud.fallback-url}")
String messageRoutingInformationEndpoint) {
return SpringCloudHttpBackupCommandRouter.builder()
.discoveryClient(discoveryClient)
.routingStrategy(new AnnotationRoutingStrategy())
.restTemplate(restTemplate)
.localServiceInstance(localServiceInstance)
.messageRoutingInformationEndpoint(messageRoutingInformationEndpoint)
.build();
}
Also enabled service discovery in main class. Any suggestions on what might be going wrong.