我在 HA 集群的不同服务器上有两个 SP 节点。我需要使用分发接收器,因为两个节点都消耗来自 EI 的事件,但被动节点将这些事件保存在队列中。活动节点向数据库发送事件。我在 tcp sink 中使用 @distribution 注释将事件从被动节点分发到主动节点。此外,我将 forcePublish 属性设置为 true,如文档中所述。https://docs.wso2.com/display/SP410/Minimum+High+Availability+%28HA%29+Deployment 现在我有两个问题。
- 当其中一个节点关闭时,活动节点仍在丢弃事件并出现此错误:Dropping event at Sink 'tcp' at 'DistributionStream' 因为它仍在尝试重新连接! 如果它在 HA 中运行并且一个节点仍处于启动状态,为什么会出现此错误?
2.当两个节点都在运行时,被动节点仍然不向主动节点分发事件,所以只有一半的事件被发送到DB,另一半仍然保留在被动节点上,只有当被动节点状态变为主动时才会发布.
经销商
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
任何想法,这些问题的原因是什么?