如何解决在Pushy中,为什么要使用多个ApnsClient?
伙计,如果有人使用Pushy向Apple设备发送Apple通知,我对ApnsClient有一个基本问题。
文档声称“一个客户端可以配置为仅使用一个连接”,但是执行此AFAIK的唯一方法是同步使用客户端(没有lambda);也许可以这样配置,但是我不知道如何。
但是更重要的是,如果在创建客户端时可以指定一个EventLoopGroup(即线程池),那么为什么需要创建多个ApnsClient?
Pushy基于Netty构建,Netty是异步事件驱动的网络 应用程序框架。 Netty严重依赖“事件”的概念 循环”,在一个线程上按顺序执行任务。在Pushy中, 与APNs服务器的单个连接被绑定到单个事件循环, 因此是一个线程。调用者可以配置ApnsClient实例 打开与APNs服务器的多个并发连接并使用 EventLoopGroups(本质上是事件循环的线程池)各不相同 大小。
因为连接绑定到单个事件循环(绑定 到单个线程),再给ApnsClient多一点也没有意义 事件循环中的线程数比并发连接数大。有一个客户 八线程EventLoopGroup,配置为仅维护一个 连接将使用组中的一个线程,而其他七个 将保持空闲状态。在一个小的情况下打开大量的连接 线程数量可能会通过增加线程数量来降低整体效率 争夺cpu时间。
解决方法
我正在使用Pushy。可以设置并发连接数(builder.setConcurrentCOnnection())。所以我的理解是,对于一个客户端,我们可以有多个并发连接。 但是我试图弄清楚我们如何设置线程池的大小(EventPoolGroup)。线程池的大小和并发连接数不应该相等,每个线程有1个连接。 我认为仅当我们需要连接到APN服务器上的不同主题时,才需要APNSClient的多个对象。即使一个APNSClient可以连接到多个主题,但为了使不同主题的呼叫分开,我们可以拥有不同的APNS Client对象。根据流量分隔连接配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。