起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1497|回复: 0

[分享] 使用v3.2.15版本SDK开发JPush服务端程序,需要手动关闭NettyHttpClient

[复制链接]

37

主题

99

帖子

289

积分

中级会员

Rank: 3Rank: 3

积分
289
QQ
发表于 2017-1-18 12:23:02 | 显示全部楼层 |阅读模式
关于开发JPush服务端程序时,如果使用v3.2.15版本SDK,极光官网提供的示例PushExample.java,默认是用NettyHttpClient,以这种模式发送完毕后,需要手动调用 close 方法关闭,但是v3.2.15中PushClient.java 及 JPushClient.java没有close()方法,这个就需要自己加上。如下所示:
JPushClient.java
public void close() {
        _pushClient.close();
    }

PushClient.java
public void close() {
        _httpClient.close();
    }
然后再重新打包jar文件,替换原来的v3.2.15本版jar文件;发送程序增加手动关闭如下:

public static void testSendPush() {
            // HttpProxy proxy = new HttpProxy("localhost", 3128);
            // Can use this https proxy: https://github.com/Exa-Networks/exaproxy
                ClientConfig clientConfig = ClientConfig.getInstance();
        JPushClient jpushClient = new JPushClient(MASTER_SECRET, APP_KEY, null, clientConfig);
        
        // For push, all you need do is to build PushPayload object.
        PushPayload payload = buildPushObject_android_newly_support();
        try {
            PushResult result = jpushClient.sendPush(payload);
            LOG.info("Got result - " + result);
            Thread.sleep(5000);
            jpushClient.close();  //手动关闭
        } catch (APIConnectionException e) {
            LOG.error("Connection error. Should retry later. ", e);
            LOG.error("Sendno: " + payload.getSendno());

        } catch (APIRequestException e) {
            LOG.error("Error response from JPush server. Should review and fix it. ", e);
            LOG.info("HTTP Status: " + e.getStatus());
            LOG.info("Error Code: " + e.getErrorCode());
            LOG.info("Error Message: " + e.getErrorMessage());
            LOG.info("Msg ID: " + e.getMsgId());
            LOG.error("Sendno: " + payload.getSendno());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }



1月17日极光官网服务端java SDK升级到v3.2.16,默认使用 NativeHttpClient 发送请求,这样就不用手动关闭了。

为什么以前默认使用NettyHttpClient呢,我猜极光是考虑服务端程序嘛,应该大多是请求量很大,需要高并发的,所以就默认是NettyHttpClient,但是实际上可能大部分应用是政企应用中的消息提醒类的应用,不是电商那样的互联网海量用户的消息发送,所以现在改成默认使用NativeHttpClient,发送完毕就自动关了。所以现在引用v3.2.16的包就OK了,不需要手动关闭。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 14:33 , Processed in 0.072603 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表