阿里物联网套件-服务端SDK学习实践(基础篇-11发消息到指定的Topic)

来源:互联网 发布:淘宝小额免密支付 编辑:程序博客网 时间:2024/06/16 07:23

发消息到指定的Topic

官网链接

public class PubTest {    public static void main(String[] args) {        DefaultAcsClient client = BaseTest.init();        PubRequest pub = new PubRequest();        pub.setProductKey("******");        pub.setMessageContent(Base64.encodeBase64String("hello world".getBytes()));//发送的消息,将消息内容二进制进行BASE64转码后得到的字符串        pub.setTopicFullName("/******/******/update");//消息发送给哪个设备的哪个topic中,例/ProductKey/设备名称/topic行为        pub.setQos(0);//设置Qos为1,那么设备如果不在线,重新上线会收到离线消息,消息最多在Iot Hub中保存7天.        PubResponse response = null;        try {            response = client.getAcsResponse(pub);        } catch (ServerException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (ClientException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println(ToStringBuilder.reflectionToString(response, ToStringStyle.SHORT_PREFIX_STYLE));    }}

打印结果:

PubResponse[requestId=27817C49-EED0-470F-8B96-2A848FA501EB,success=true,errorMessage=<null>]

主要是TopicFullName,在控制台可以通过产品-设备-设备Topic查看相应的值。值的规则大致是/ProductKey/设备名称/topic行为。MessageContent是消息内容,需要Base64转码,可以添加以下工具包的pom.xml文件中,然后就能用例子中的方法转码了。

        <dependency>            <groupId>commons-codec</groupId>            <artifactId>commons-codec</artifactId>            <version>1.10</version>        </dependency>

按照SDK文档里写的,返回的requestId的描述中还会有(UNKNOW,SUCCESS,TIMEOUT)这些内容,但是目前测试中还没有显示出来,后期使用过程再观察下。

阅读全文
0 0
原创粉丝点击