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

Я использую Azure Java SDK, чтобы научиться разрабатывать модуль Java IoT Edge. Я следую этому руководству https://docs.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))); 
    }
}

Как видите, отправленные и полученные сообщения имеют тип Сообщение.

Как я могу отправить целое число, например? Я вижу, что могу преобразовать его в строку с помощью

String msgString = new String(msg.getBytes(), Message.DEFAULT_IOTHUB_MESSAGE_CHARSET);

Но как насчет Целого?

Кроме того, в методе sendEventAsync какой третий параметр msg? В документация говорят, что это Object callbackContext, но я не понимаю, что это такое и почему мы используем msg в качестве этого параметра.

Спасибо за ваш ответ


person iAmoric    schedule 04.03.2019    source источник


Ответы (1)


Отправить целое число как двоичное сообщение довольно просто:

Message msg = new Message(ByteBuffer.allocate(4).putInt(1695609641).array());

Третий параметр в методе sendEventAsync — это объект контекста для метода обратного вызова во втором параметре со следующей сигнатурой метода.

void execute(IotHubStatusCode responseStatus, Object callbackContext);

Таким образом, передача сообщения в третьем параметре дает вам доступ к сообщению в методе обратного вызова.

person Juergen Mayrbaeurl    schedule 10.03.2019
comment
Спасибо, пойду тестить - person iAmoric; 12.03.2019