#java #azure #azure-iot-edge #azure-sdk
#java #azure #azure-iot-edge #azure-sdk
Вопрос:
Я использую Azure Java SDK, чтобы научиться разрабатывать модуль Java IoT Edge. Я следую этому руководству https://learn.microsoft.com/en-us/azure/iot-edge/tutorial-java-module.
Итак, они объясняют, как отправлять сообщения и получать сообщения с обратным вызовом, как здесь :
// Send message:
client.sendEventAsync(msg, eventCallback, msg, App.OUTPUT_NAME);
// Receive message:
private static MessageCallbackMqtt msgCallback = new MessageCallbackMqtt();
client.setMessageCallback(App.INPUT_NAME, msgCallback, client);
protected static class MessageCallbackMqtt implements MessageCallback {
private int counter = 0;
@Override
public IotHubMessageResult execute(Message msg, Object context) {
System.out.println(String.format("Received message %d: %s", this.counter, new String(msg.getBytes(), Message.DEFAULT_IOTHUB_MESSAGE_CHARSET)));
}
}
Как вы можете видеть, отправленные и полученные сообщения имеют тип Message.
Как я могу отправить целое число, например? Я вижу, что могу преобразовать его в строку с
String msgString = new String(msg.getBytes(), Message.DEFAULT_IOTHUB_MESSAGE_CHARSET);
Но как насчет Integer?
Кроме того, в методе sendEventAsync, каков третий параметр msg? В документации говорится, что это Object callbackContext
но я не понимаю, что это такое и почему мы используем msg
в качестве этого параметра.
Спасибо за ваш ответ
Ответ №1:
Отправить целое число в виде двоичного сообщения довольно просто:
Message msg = new Message(ByteBuffer.allocate(4).putInt(1695609641).array());
Третий параметр в методе sendEventAsync является контекстным объектом для метода обратного вызова во втором параметре со следующей сигнатурой метода
void execute(IotHubStatusCode responseStatus, Object callbackContext);
Таким образом, передача сообщения в третьем параметре дает вам доступ к сообщению в методе обратного вызова
Комментарии:
1. Спасибо, я собираюсь это протестировать