如何使用java发布到IoT中的MQTT主题?

如何使用java发布到IoT中的MQTT主题?,java,ibm-cloud,mqtt,Java,Ibm Cloud,Mqtt,在Bluemix中,我有一个java_buildpack应用程序,它当前从消息中心主题拾取/使用消息,现在我想重新格式化该消息并将其发布到Mqtt客户机。我将物联网平台服务绑定到我的java_buildpack应用程序,并创建了设备类型javaDevice和设备id javaDevice01 以下是我的iotf服务的环境变量: “物联网服务”:[{“名称”:“物联网平台或”、“标签”:“物联网服务”、“计划”:“物联网免费服务”、“凭证”:{ “IoCredentialIdentifier”:“

在Bluemix中,我有一个java_buildpack应用程序,它当前从消息中心主题拾取/使用消息,现在我想重新格式化该消息并将其发布到Mqtt客户机。我将物联网平台服务绑定到我的java_buildpack应用程序,并创建了设备类型javaDevice和设备id javaDevice01

以下是我的iotf服务的环境变量:

“物联网服务”:[{“名称”:“物联网平台或”、“标签”:“物联网服务”、“计划”:“物联网免费服务”、“凭证”:{ “IoCredentialIdentifier”:“a2g6k39sl6r5”,“mqtt_主机”: “qzfiy.messaging.internetofthings.ibmcloud.com”,“mqtt____端口”:1883, “mqtt_s_端口”:8883,“基本uri”: "", “http_host”:“qzfiiy.internetofthings.ibmcloud.com”,“org”:“qzfiiy”, “apiKey”:“XXXXXXXXXXXXX”,“apiToken”:“XXXXXXXXXXXXX”}

创建MqttClient实例时,应该传入什么:

MqttClient MqttClient=新的MqttClient(代理、客户端ID、持久性);

我想我在某个地方为客户读到过,应该是这样的:

A:qzfiiy:javaDevice:javaDevice01

应该为代理传递什么?我是否使用此环境变量-
“mqtt_host”:“qzfiy.messaging.internetofthings.ibmcloud.com”,

任何帮助都将不胜感激


谢谢!

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

对于设备:使用以下格式的客户端ID进行身份验证

 d:$org:$type:$id
MQTT客户端ID必须为d:$org:$type:$ID

MQTT用户名必须为use token auth

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

应用程序使用以下格式的客户端ID进行身份验证:

 a:$org:$appId
当使用API密钥建立MQTT连接时,以下内容适用:

MQTT客户端ID:a:$org:$appId

MQTT用户名必须是API键:a:$org:apikeyvalue

MQTT密码必须是身份验证令牌:APItoken

如果您需要这些主题,那么这些主题如下

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

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

对于设备,事件主题是iot-2/evt/{event type}/fmt/{format type}

对于命令,命令主题是iot-2/cmd/{command type}/fmt/{format type}

有关更多信息,请参阅文档

您还可以使用java客户端库,它封装了所有功能并提供了包装器API

对于MQTT代理,您需要使用{orgid}.messaging.internetofthings.ibmcloud.com