2016-04-14 145 views
1

在Bluemix中,我有一个java_buildpack应用程序,它正在拾取/消费来自Message Hub主题的消息,现在我想重新格式化该消息并将其发布到Mqtt客户端。我将物联网平台服务绑定到我的java_buildpack应用程序,并创建了设备类型javaDevice和设备标识javaDevice01。如何使用java发布到物联网中的MQTT主题?

下面是我的IOTF服务环境变量:“物联网平台,或上网”,“标签”:“IOTF服务”

“IOTF服务”:[{“名” ,“计划”:“iotf-service-free”,“credentials”:{ “iotCredentialsIdentifier”:“a2g6k39sl6r5”,“mqtt_host”: “qzfiiy.messaging.internetofthings.ibmcloud.com”,“mqtt_u_port”:1883, “mqtt_s_port”:8883, “base_uri”: “https://qzfiiy.internetofthings.ibmcloud.com:443/api/v0001”, “HTTP_HOST”: “qzfiiy.internetofthings.ibmcloud.com”, “组织”: “qzfiiy”, “apiKey”: “XXXXXXXXXXXXXXX”,“apiToken “:”xxxxxxxxxxxxxx“ }}

当我创建MqttClient的情况下,我应该怎么来传递:

MqttClient mqttClient = new MqttClient(broker, clientId, persistence);

我想我读某处ClientID的,它应该是这样的:

A:qzfiiy:javaDevice:javaDevice01

经纪人应该传递什么?我使用这个环境变量 - "mqtt_host": "qzfiiy.messaging.internetofthings.ibmcloud.com",

任何帮助将不胜感激。

谢谢!

回答

3

如果您要作为应用程序进行连接,请使用应用程序标准。如果作为设备连接,请使用设备标准(见下文)。

对于DEVICE:认证以下列格式

d:$org:$type:$id 

MQTT客户机ID必须为D使用客户端ID:$ ORG:$类型:$ ID

MQTT用户名必须使用-令牌的AUTH

MQTT密码必须验证令牌:身份验证令牌(例如:MP $ 08VKz 8rXwnR-Q *)

应用程序验证这种格式的使用客户端ID:

a:$org:$appId 

使用以下适用的API密钥制作的MQTT连接时:

MQTT客户ID:A:$ ORG:$ APPID

MQTT用户名必须API密钥:A:$组织:apikeyvalue

MQTT密码必须验证令牌:APItoken

的情况下,你所需要的主题,那么那些如下。

对于应用程序,事件主题是IOT-2 /类型/ {设备类型}/ID/{设备ID}/EVT/{事件类型}/FMT/{格式类型}

对于应用程序,命令主题是设备,事件主题是iot-2/evt/{event/iot-2/type/{device type}/id/{device id}/cmd/{command type}/fmt/{format type}

类型}/FMT/{格式类型}

有关命令,命令主题是IOT-2/CMD/{命令类型}/FMT/{格式类型}

可以参考待办事项提供更多信息。 https://iotf.readthedocs.org/en/latest/?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601

您也可以使用它封装了所有功能,并提供包装的API https://github.com/ibm-messaging/iot-java/releases?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601

对于MQTT经纪人Java客户端库,你需要使用{} ORGID .messaging.internetofthings.ibmcloud.com