我正在尝试了解CometD典型用户的用例/架构,看看我是否在正确的轨道上。这是描述我们预期用途的图表。
我们希望CometD服务器更像是我们的Web服务的事件pub / sub,NO CONTENT将通过CometD,只传递事件数据。 Web服务可以根据客户端处理的操作向客户端发布事件,也可以从长时间运行的进程/调度进程发生。
我的问题基于Java客户端:
感谢您的时间!
答案 0 :(得分:1)
是的,这是适当使用CometD Java客户端。
您可以拥有CometD Java客户端的单个实例,可以安全地使用多线程,或者您可以为每个Web服务使用一个CometD Java客户端,这可能是推荐的方法(正如您在CometD服务器中可以识别的那样)哪个Web服务发送了什么)。
请注意,CometD Java客户端是异步的。
如果您需要回复或确认您发送的消息是由CometD服务器处理的,您需要能够暂停Web服务请求(通过HttpServletRequest.startAsync()
或类似),调用CometD Java客户端,当您收到消息确认时,安排完成对客户端的Web服务响应。
您可以使用CometD Java客户端API中的回调获取确认,请参阅CometD Java client API documentation。
为完整起见,如果您使用广播频道从Web服务发布消息,则该消息将立即由CometD服务器重新广播到远程客户端。
另一方面,如果您使用服务通道从Web服务发布消息,您将能够在CometD服务器上处理该消息(并且可能在使用某些业务逻辑之后对其进行充实或删除)有机会重新播放或发送给特定的客户。