我面临通过长轮询传输连接服务器的 CometD 客户端应用程序的问题。当 Bayeux 客户端和频道显示为 CONNECTED 并且订阅者停止接收事件时,存在未知场景。同时我们看到事件正在到达扩展(ReplayExtension)。
platformevent.pull.listener.SFDCPlatformEventListenerV2,EnhancedBayeuxClient@762f062b[281fubf9u3oc3xy1mhi0kpswuiid][SessionState@50e82092[CONNECTED]], dump:EnhancedBayeuxClient@762f062b[281fubf9u3oc3xy1mhi0kpswuiid][SessionState@50e82092[CONNECTED]]
+> AttributesMap@496367f2
| +> null
+> extensions size=1
| +> platformevent.pull.extension.ReplayExtension@6101e9c5
+> channels size=8
+> /event/ae_spark__TEL_Bulk_Change__e
| +> listeners size=0
| +> subscribers size=1
| +> subscriber.PEListenerKafkaPublisher@2bf94401
+> /meta/*
| +> listeners size=0
| +> subscribers size=0
+> /meta/**
| +> listeners size=0
| +> subscribers size=0
+> /meta/connect
| +> listeners size=1
| | +> platformevent.pull.listener.PullAuthFailureListener@7fec5ba4
| +> subscribers size=0
+> /meta/disconnect
| +> listeners size=0
| +> subscribers size=0
+> /meta/handshake
| +> listeners size=0
| +> subscribers size=0
+> /meta/subscribe
| +> listeners size=1
| | +> platformevent.pull.listener.EnhancedBayeuxClient$$Lambda$1240/918157032@306ad64
| +> subscribers size=0
+> /meta/unsubscribe
+> listeners size=1
| +> platformevent.pull.listener.EnhancedBayeuxClient$$Lambda$1239/617777499@4a59da25
+> subscribers size=0
key: +- bean, += managed, +~ unmanaged, +? auto, +: iterable, +] array, +@ map, +> undefined,
Extensions:[platformevent.pull.extension.ReplayExtension@6101e9c5]
HttpClient: HttpClient@5b519f20{STARTED}
2021-03-27 21:17:08.734 INFO 67 --- [qtp561448546-42] c.a.s.p.p.p.l.EnhancedBayeuxClient : Recived lstn:{clientId=281fubf9u3oc3xy1mhi0kpswuiid, channel=/meta/subscribe, id=1077, subscription=/event/ae_spark__TEL_Bulk_Change__e, successful=true}
我在 PullAuthFailureListener 中有一个逻辑,它在消息不成功时重新启动 Bayeux 客户端。重启步骤为:
- 取消订阅所有频道。
- 断开 Bayeux 客户端。
- 再次握手
- 注册频道/订阅者 (/event/ae_spark__TEL_Bulk_Change__e)
有什么建议可能会阻止事件到达订阅者,或者有什么建议可以进一步解决这个问题?