Salesforce 平台事件与 ComeTd 客户端重复事件

Salesforce platform event duplicate events with ComeTd Client

我已经构建了 Salesforce platform event client using CometD java and It's similar to example EMP-Connector,由 forcedotcom 提供。

我在 OpenShift 云上安装了这个客户端,我的应用程序是 运行 2 pods。我面临的问题是,由于有两个 pods 并且每个 运行 都使用相同的 docker 图像,因此两者都得到相同的事件。这意味着重复事件。 根据我的理解,Salesforce 平台事件应该表现得像 Kafka 订阅者。

我找不到有关如何避免获得相同事件副本的解决方案。这里的任何建议都会有很大的帮助。

注意:截至目前,我能够创建删除事件副本的客户端解决方案。这不是最佳解决方案。 我必须 运行 我的应用程序至少有 2 pods。这是我在云上的限制。

这是预期/设计使然。在 CometD 中,当消息在广播频道上发布时,所有收听该频道的订阅者都将收到该消息的副本。广播频道的行为类似于消息传递主题,其中一个发送者希望将相同的信息发送给多个接收者。 CometD 中还有其他类型的通道,它们具有不同的语义。广播频道和 one-to-many 消息语义是您通过 Salesforce 中的 CometD 获得的平台事件。

在你的情况下,听起来你有多个订阅者,因此你所看到的是预期的。您可以像之前那样在客户端对消息流进行重复数据删除,或者您可以更改您的体系结构,以便您只有一个订阅。