Javaの IoT DeviceClient SDK をJRubyで呼び出して, IoTHubにメッセージを送るサンプルです.
サンプルコード
require 'java'
require "./iot-device-client-1.0.17-with-deps.jar"
java_import "com.microsoft.azure.sdk.iot.device.DeviceClient"
java_import "com.microsoft.azure.sdk.iot.device.IotHubClientProtocol"
java_import "com.microsoft.azure.sdk.iot.device.Message"
java_import "com.microsoft.azure.sdk.iot.device.IotHubEventCallback"
class EventCallback
include IotHubEventCallback
def execute(status, context)
# status: IotHubStatusCode
# context: Object
puts "Callback #{context} : #{status.to_s}"
end
end
connection_string = "<接続文字列>"
client = Java::ComMicrosoftAzureSdkIotDevice::DeviceClient.new(connection_string, IotHubClientProtocol::AMQPS)
client.setOption("SetSASTokenExpiryTime", 10)
print "opening..."
client.open()
puts "Done."
require 'json'
10.times do |i|
puts({"i" => i}.to_json)
msg = Message.new({"i" => i}.to_json)
msg.setExpiryTime(5000)
client.sendEventAsync(msg, EventCallback.new, "ID:#{i}")
sleep 1
end
print "closing..."
client.close()
puts "Done."
実行結果
pening...Done.
{"i":0}
Callback ID:0 : OK_EMPTY
{"i":1}
Callback ID:1 : OK_EMPTY
{"i":2}
Callback ID:2 : OK_EMPTY
{"i":3}
Callback ID:3 : OK_EMPTY
{"i":4}
Callback ID:4 : OK_EMPTY
{"i":5}
Callback ID:5 : OK_EMPTY
{"i":6}
Callback ID:6 : OK_EMPTY
{"i":7}
Callback ID:7 : OK_EMPTY
{"i":8}
Callback ID:8 : OK_EMPTY
{"i":9}
Callback ID:9 : OK_EMPTY
closing...Done.