MQTT アダプタの使用法
ここでは、MQTT の受信アダプタおよび送信アダプタ EnsLib.MQTT.Adapter.InboundOpens in a new tab および EnsLib.MQTT.Adapter.OutboundOpens in a new tab の動作と、カスタムのビジネス・サービスおよびオペレーションでこれらを使用する方法について説明します。
MQTT 受信アダプタ
MQTT 受信アダプタは、ブローカ上のメッセージを購読し、そのサブスクリプションからメッセージを受信する役割を果たします。この受信アダプタは以下を実行します。
-
初期化の際、%Net.MQTT.ClientOpens in a new tab クライアントを作成します。
-
タスクでは、以下を実行します。
-
ブローカに接続されているかどうかを確認します。初めて呼び出された場合、または接続が失われている場合、アダプタは %Net.MQTT.ClientOpens in a new tab クライアントを使用してブローカに接続し、指定されたトピックを購読します。これはオプションでワイルドカードを含めることができます。
-
%Net.MQTT.ClientOpens in a new tab クライアントを使用して、トピックとメッセージを受信します。
-
受信呼び出しがタイムアウトしていない場合、ビジネス・サービスの ProcessInput() メソッドを呼び出して、メッセージに渡します。
-
MQTT 受信アダプタを使用するビジネス・サービスの作成
このアダプタをプロダクションで使用するには、ここに記載されているように新しいビジネス・サービス・クラスを作成します。その後、“MQTT パススルー・ビジネス・サービスおよびオペレーションの構成と使用” で説明しているパススルー・サービスおよびオペレーションの場合と同様に、これをコンパイルし、プロダクションに追加して、構成します。新しいカスタムのメッセージ・クラスが必要な場合は、"プロダクションの開発" の “メッセージの定義” の説明のとおりにこれを作成します。
ビジネス・サービス・クラスの基本要件を以下に列挙します。
-
ビジネス・サービス・クラスは Ens.BusinessServiceOpens in a new tab を拡張するものでなければなりません。
-
クラスの ADAPTER パラメータは EnsLib.MQTT.Adapter.InboundOpens in a new tab である必要があります。
-
クラスには OnProcessInput() メソッドを実装する必要があります。これについては、“OnProcessInput() メソッドの実装” で説明します。
-
その他のオプションと一般情報は、"プロダクションの開発" の “ビジネス・サービス・クラスの定義” を参照してください。
受信アダプタに関連する設定については、“MQTT パススルー・ビジネス・サービスおよびオペレーションの構成と使用” および “MQTT アダプタの設定” を参照してください。
以下の例は、ビジネス・サービス・クラスの全体的な構造を示しています。
Class EMQTT.NewService1 Extends Ens.BusinessService
{
Parameter ADAPTER = "EnsLib.MQTT.Adapter.Inbound";
Method OnProcessInput(pInput As EnsLib.MQTT.Message, pOutput As %RegisteredObject) As %Status
{
set tsc=$$$OK
//your code here
Quit tsc
}
}
OnProcessInput() メソッドの実装
カスタムのビジネス・サービス・クラスでは、OnProcessInput() メソッドのシグニチャは以下のようになります。
Method OnProcessInput(pInput As EnsLib.MQTT.Message, pOutput As %RegisteredObject) As %Status
MQTT 送信アダプタ
送信アダプタは、ブローカにメッセージを発行する役割を果たします。送信アダプタがメッセージで呼び出されると、以下を実行します。
-
ブローカへの接続がまだない場合、これを作成します。
-
入力パラメータにトピックの値が含まれる場合は、これを使用します。トピックが提供されていない場合は、設定で指定されたトピックを使用します。
-
入力パラメータまたは設定からのトピックを使用して、ブローカにメッセージを発行します。