Отбрасывание события в Sink 'tcp' в 'DistributionStream', так как оно все еще пытается восстановить соединение
У меня есть два узла 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
Есть идеи, что может быть причиной этих проблем?
1 ответ
На самом деле, это решено, обратитесь к https://github.com/wso2/product-sp/issues/570