Cometd/bayeux 客户端 + Salesforce 流 API 问题

Posted

技术标签:

【中文标题】Cometd/bayeux 客户端 + Salesforce 流 API 问题【英文标题】:Cometd/bayeux client + salesforce streaming API issue 【发布时间】:2018-10-26 04:05:34 【问题描述】:

我有订阅 Salesforce 流 API 推送主题的 .NET 客户端(Windows 服务)。

我能够连接到 Salesforce,并且可以将通知发送给我的客户。一切正常,但是:

如果我更新对象一段时间(可能 2 小时)后渠道上没有任何活动(Salesforce 对象没有更改),我不会收到来自 Salesforce 的任何通知。

我曾尝试将侦听器记录在下面的日志中

"clientId":"f6xo67iet55w5j7ek6ldw72nfc6","channel":"/meta/connect","id":"82","successful":true 2018 年 5 月 15 日晚上 8:12:28

p>

"advice":"interval":0,"reconnect":"handshake","channel":"/meta/connect","id":"83","error":"403: :未知客户","成功":false 2018 年 5 月 15 日晚上 8:12:28

"clientId":"hbx1v2cxebbeder11s99dqkxmasre","advice":"interval":0,"timeout":110000,"reconnect":"retry","channel":"/meta/connect"," id":"85","成功":true 2018 年 5 月 15 日晚上 8:12:29

"clientId":"hbx1v2cxebbeder11s99dqkxmasre","channel":"/meta/connect","id":"86","successful":true 2018 年 5 月 15 日晚上 8:14:20

"clientId":"hbx1v2cxebbeder11s99dqkxmasre","channel":"/meta/connect","id":"87","successful":true 2018 年 5 月 15 日晚上 8:16:10

所以根据日志,有时我会收到“403::Unknown client”,但之后立即再次显示频道成功。

但正如我所说,当我在 2 小时后尝试更新 Salesforce 对象时(根据日志,它连接成功)我没有收到任何通知。

如果我重新启动 Windows 服务并再次收到通知。

在我的客户中,我使用来自 - https://github.com/couchand/CometD.NET/tree/headers 的 cometd 对于推送主题订阅,我正在使用这个 - https://github.com/foluis/Salesforce_PushTopics

任何帮助将不胜感激。

【问题讨论】:

有人能解释一下吗? 【参考方案1】:

好吧,我终于可以让它工作了。以下是变化

    只要有“403::Unknown client”,CometD 就会尝试重新连接(cometd 的默认行为) 一旦重新连接,所有频道订阅都将被删除(这是 cometd 所做的,它的默认行为) 所以,解决方案是,我们总是需要在“元/握手”回调中进行频道订阅。甚至 cometd.org 也建议这样做。 这将确保每个握手通道上的同步 执行此操作后,我的 salesforce 同步工作正常,即使我们没有从 salesforce 更新任何对象,然后在 2 天后尝试它仍然有效。

【讨论】:

好消息!您是否为此使用 .net CometD 实现?谢谢! @federom - 是的。正如我上面提到的 - github.com/couchand/CometD.NET/tree/headers 我在 Bayeux 客户端创建了一些事件来推送错误。然后从我的应用程序中,我检测到错误何时发生,并创建了一个新客户端,握手并订阅了事件。这似乎行得通!谢谢!! @GuruPrasad 目前我也面临同样的问题 - 可以发送示例代码 @Thennarasan - 很抱歉很久没看到这个了。如果您仍然需要信息,可以将代码发送给您。告诉我。

以上是关于Cometd/bayeux 客户端 + Salesforce 流 API 问题的主要内容,如果未能解决你的问题,请参考以下文章

OSGi、Jetty 和 CometD/Bayeux

如何将 GWT 连接到 CometD/Bayeux 事件?

magento麦进斗客户地址属性不保存在sales_flat_order_address

当Sales进入Oracle云时代!

[转帖]SAP一句话入门:Sales and Distribution

Dynamics 365 for Sales: Web API Client编程辅助类