Как отправить и получить сообщение с помощью Azure Java SDK - PullRequest
0 голосов
/ 04 марта 2019

Я использую 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))); 
    }
}

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

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

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

Но как насчет Integer?

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

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

1 Ответ

0 голосов
/ 10 марта 2019

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

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

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

void execute(IotHubStatusCode responseStatus, Object callbackContext);

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

...