服务端订阅客户端只能用于订阅物联网平台推送的消息,不能发布消息。如果您用HTTP/2 SDK发布消息,会有如下报错信息:
6095 [nioEventLoopGroup-2-1] ERROR com.aliyun.openservices.iot.api.message.impl.MessageClientImpl - failed to publish message 0, error: failed to publish, code: 400, content: Forbidden.
6095 [nioEventLoopGroup-2-1] INFO com.aliyun.openservices.iot.api.message.impl.MessageClientImpl - give up publishing, message id: 0
因为配置HTTP/2 SDK时,使用Profile.getAccessKeyProfile 配置连接,表示SDK以订阅者身份接入物联网平台,只能订阅消息,不能发布消息,且subscribe、unsubscribe和publish 三个接口无法使用。
您的服务端没有接收到已订阅的消息,原因如下:
原因:服务端订阅回调中,可能存在耗时业务。
解决方法:配置HTTP/2 SDK时,需配置收到消息后尽快return CommitSuccess;并且,配置另起线程处理业务。
物联网平台会将已订阅的消息全量推送到您的消费端,您需调用setMessageListener进行本地消息过滤,处理指定Topic的消息。具体方法如下:
setMessageListener(String topic, MessageCallback messageCallback)
匹配指定Topic的消息到达时,则会调用指定的回调messageCallback处理;不匹配指定Topic的消息到达时,则会调用您在connect中指定的回调处理。
服务端订阅是账号维度的消息推送,无法从产品或设备维度来区分消息。如果不希望在测试环境收到线上产品的消息,建议如下两种处理方式:
服务端订阅仅支持 Java 和 .NET 两种语言的SDK,并且两种语言的SDK有以下限制:
服务端订阅按照消息数量计费。具体计费方法,请参见计费方法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。