LoginSignup
1
0

More than 5 years have passed since last update.

JRubyを使ってAzure IoTHubにメッセージを送信する

Posted at

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.
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0