我将数据发送到IoT Hub并接收它,它可以工作,但我不知道我如何使用收到的数据:这是我的代码接收数据:
public void accept(PartitionReceiver receiver)
{
System.out.println("** Created receiver on partition " + partitionId);
try {
while (true) {
Iterable<EventData> receivedEvents = receiver.receive(10).get();
int batchSize = 0;
if (receivedEvents != null)
{
for(EventData receivedEvent: receivedEvents)
{
System.out.println(String.format("| Time: %s", receivedEvent.getSystemProperties().getEnqueuedTime()));
System.out.println(String.format("| Device ID: %s", receivedEvent.getProperties().get("iothub-connection-device-id")));
System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset())));
batchSize++;
}
}
}
}
catch (Exception e)
{
System.out.println("Failed to receive messages: " + e.getMessage());
}
}
我想使用收到的数据,这里我将数据变为JSON字符串:
System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset())));
数据输出为:产品:xy,价格:2.3。 我想把数据带到:
String product= product;
double price= price;
如何将收到的Payload保存在变量中?
由于
答案 0 :(得分:2)
有两种消息,包括device-to-cloud
和cloud-to-device
。
对于第一类device-to-cloud
消息,如@DominicBetts所述,您可以参考Receive device-to-cloud messages
部分了解如何使用与Event Hub兼容的端点接收d2c消息。有两个样本作为GitHub的参考,请参见下文。
对于第二种cloud-to-device
消息,您可以参考Receiving messages on the simulated device
部分了解如何接收c2d消息。本文中的示例代码是针对C#编写的,但我认为使用Java而不是C#很简单,请注意选择合适协议的部分中的注释。