У меня весеннее загрузочное приложение, в котором есть набор верблюжьих маршрутов. Я ищу вариант для достижения аварийного переключения на верблюжьих маршрутах, когда один JVM выходит из строя. Моя цель состоит в том, чтобы мое приложение работало в одной JVM, и когда это приложение выходит из строя, другой маршрут JVM должен обрабатывать мои сообщения.
Когда я пытаюсь добавить кластеризацию, я получаю сообщение об ошибке ( Причина: java .lang.IllegalStateException: служба CamelCluster не найдена ), и даже я не уверен правильно ли я пытаюсь использовать мой код.
public class RouteCmdLineRunner implements CommandLineRunner {
@Autowired
private Configuration configuration;
@Autowired
private CamelContext camelContext;
@Override
public void run(String... args) {
CamelClusterService atomixClusterService = new AtomixClusterService();
atomixClusterService.setId("camel-node-1");
camelContext.addService(atomixClusterService);
if (configuration != null && configuration.getRoutes() != null) {
configuration.getRoutes().forEach(route -> {
try {
camelContext.addRoutePolicyFactory(ClusteredRoutePolicyFactory.forNamespace("my-ns"));
camelContext.addRoutes(new MyRouteBuilder(route, configuration));
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
}
}
application.yml
camel:
component:
atomix:
cluster:
service:
id: testid-1
enabled: true
order: 1
mode: node
address: localhost:8081
master:
service: AtomixClusterService
camel.clustered.controller.namespace: my-ns
camel.clustered.controller.enabled: true
camel.component.master.service: true
pom. xml
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-master-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix-starter</artifactId>
<version>3.0.0-RC3</version>
</dependency>
<dependency>
<groupId>io.atomix</groupId>
<artifactId>atomix-all</artifactId>
<version>1.0.8</version>
</dependency>
- Находится ли кластеризация на верблюде в экспериментальной стадии? https://camel.apache.org/manual/latest/clustering.html
- В документации Camel говорится, что у него есть главный компонент, который выполняет отработку отказа. (https://camel.apache.org/components/latest/master-component.html), но я не вижу полного примера кластеризации.
- Какая польза от верблюжьего кластерного контроллера?
Хотя есть документация на верблюдах, она все еще не полна и не запутана.
- Версия верблюда: 3.1.0
- Spring-boot: 2.2 .5.RELEASE
Любые указатели будут полезны для достижения кластеризации верблюдов. Я что-то упускаю концептуально?
Для этого аварийного переключения у меня нет возможности установить какой-либо новый сервер, например, серверы ZooKeeper / Consul.