У меня есть два узла SP на разных серверах в кластере высокой доступности.Мне нужно использовать распределительные приемники, потому что оба узла потребляют события из EI, но пассивный узел хранит эти события в очереди.Активный узел отправляет события в БД.Я использовал аннотацию @distribution в приемнике tcp для распределения событий от пассивного узла к активному узлу.Также я установил для свойства forcePublish значение true, как описано в документации.https://docs.wso2.com/display/SP410/Minimum+High+Availability+%28HA%29+Deployment Теперь у меня две проблемы.
- Когда один из узлов не работает, активный узел все еще сбрасывает события с этой ошибкой: Событие сброса в Sink 'tcp' в«DistributionStream» все еще пытается восстановить соединение! Почему возникает эта ошибка, если она работает в HA и один узел все еще работает?
2.При работе обоих узлов пассивный узелпо-прежнему не распределяет события на активный узел, поэтому только половина событий отправляется в БД, вторая половина остается на пассивном узле и публикуется только при изменении состояния пассивного узла на активное.
Распределитель
Distributor.siddhi
@sink(type='tcp' , sync='true', @map(type='json'), @distribution(
forcePublish='true',
strategy='broadcast',
@destination(
url='tcp://x.x.x.0:7612/ExecutorSourceStream'),
@destination(
url='tcp://x.x.x.1:7612/ExecutorSourceStream')))
define stream DistributionStream(
test string
);
Исполнитель
Executor.siddhi
@source(type='tcp', context='ExecutorSourceStream', @map(type='json'))
define stream ExecutorSourceStream(
test string
);
Deployment.yml на обоих узлах
siddhi:
extensions:
- extension:
name: tcp
namespace: source
properties:
host: 0.0.0.0
port: 7612
Есть идеи, что может быть причиной этих проблем?