Как отправить и получить сообщение с помощью Azure Java SDK

#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. Спасибо, я собираюсь это протестировать