伙计们,如果有人使用 Pushy 向 Apple 设备发送 Apple 通知,我有一个关于 ApnsClient 的基本问题。
该文档声称“客户端可以配置为仅使用一个连接”,但执行此操作的唯一方法 AFAIK 是同步使用客户端(无 lambda);也许可以这样配置,但我不知道如何配置。
更重要的是,如果可以在创建客户端时指定 EventLoopGroup(即线程池),为什么需要创建多个 ApnsClient?
Pushy 建立在 Netty 之上,这是一个异步事件驱动的网络应用程序框架。Netty 严重依赖“事件循环”的概念,它在单个线程上串行执行任务。在 Pushy 中,与 APNs 服务器的单个连接绑定到单个事件循环,因此是单个线程。调用者可以配置 ApnsClient 实例以打开到 APNs 服务器的多个并发连接,并使用不同大小的 EventLoopGroups(本质上是事件循环的线程池)。
因为连接绑定到单个事件循环(绑定到单个线程),所以在事件循环中为 ApnsClient 提供比并发连接更多的线程是没有意义的。配置为仅维护一个连接的八线程 EventLoopGroup 的客户端将使用该组中的一个线程,但其他七个将保持空闲状态。在少量线程上打开大量连接可能会通过增加 CPU 时间的竞争而降低整体效率。