MQTT パススルー・ビジネス・サービスおよびオペレーションの構成と使用
ここでは、組み込みの MQTT パススルー・ビジネス・サービスおよびパススルー・ビジネス・オペレーションの動作について説明します。
パススルー・ビジネス・サービスの追加と構成
ビジネス・サービスをプロダクションに追加するには、管理ポータルを使用して相互運用対応ネームスペースで以下の操作を行います。
-
MQTT ブローカでユーザ名/パスワード認証を使用している場合、まず、その情報で認証情報を定義する必要があります (管理ポータルの [相互運用性]→[構成]→[認証情報])。TLS 認証を使用している場合は、インターシステムズの "TLS ガイド" を参照してください。
-
EnsLib.MQTT.Service.PassthroughOpens in a new tab ビジネス・サービス・クラスのインスタンスをプロダクションに追加します。
-
入力を受信できるようにビジネス・サービスを構成します。
-
[基本の設定] 内の [ターゲット構成名] プロパティを設定します。このプロパティは多くのビジネス・サービスに共通で、ビジネス・サービスがそのメッセージをどこに送信するのかを指定します。ターゲットには、1 つ以上のビジネス・プロセスおよびビジネス・オペレーションを指定できます。
-
オプションで [CleanSession] プロパティを設定します。[CleanSession] にチェックが付けられている場合、ブローカは接続から次の接続までの間、サブスクリプションについての情報を保持しません。接続が一時的に切断されている間に発行されたメッセージを受信する場合は、[CleanSession] プロパティにはチェックを付けないでください。
-
[ClientID] プロパティを設定します。これはブローカに対するクライアントを指定します。ASCII でエンコードされ、長さが 1 ~ 23 文字である必要があります。ブローカへの接続を切断してから再接続する場合、ClientID が同じであればその ID 情報を保持し、切断中に送信されたメッセージを返します ([CleanSession] にチェックが付いていない場合)。[ClientID] フィールドを空のままにすると、クライアントによって一意の ClientID が割り当てられます。複数のプロダクションで同じビジネス・サービスを実行している場合、それぞれが異なる ClientID を持つようにしてください。そうでない場合、ブローカはそれらを 1 つのクライアントとして扱い、それらのうちの 1 つにしかメッセージを返しません。
-
[ConnectTimeout] プロパティを設定します。これは、ビジネス・サービスがブローカからの応答確認を待機する秒数を設定します。
-
ログイン認証情報を使用している場合、[CredentialsName] プロパティを手順 1 で定義した認証情報名に設定します。
-
[KeepAlive] プロパティを、クライアントからブローカへのメッセージの最大間隔 (秒数) に設定します。
-
オプションで、[LWTTopic] および [LWTMessage] プロパティを設定します。これらは、接続の Last Will and Testament (遺言) メッセージを設定します。接続が予期せずに失われたことをブローカが検出すると、これは指定したトピックとメッセージを使用してメッセージを発行します。
-
[QOS] プロパティを設定します。これによって、ブローカとの接続におけるサービス品質が設定されます。値が 0 の場合、ビジネス・サービスはブローカからの確認応答を待機しないことを意味し、値が 1 の場合、ビジネス・サービスはブローカがメッセージを受信したという確認応答を待機することを意味します。
-
[Retained] プロパティにはチェックを付けないでください。これはメッセージを発行するためにのみ使用され、メッセージの購読には使用されません。メッセージの発行時にこのプロパティを設定すると、ブローカにこのメッセージを保持し、これを新しいサブスクライバに返すよう指示します。
-
TLS セキュリティを使用している場合は、[SSLConfigName] を TLS 構成の名前に設定します。
-
[QOS] を 1 に設定した場合、[タイムアウト] プロパティを、ビジネス・サービスが確認応答を待機する秒数に設定します。
-
[トピック] プロパティを、購読するトピックに設定します。トピックは通常、サブトピックのレベルが / (スラッシュ) で区切られた階層文字列です。サブスクリプションでは、トピックにワイルドカードを含めることができます。
-
+ (プラス記号) — そのレベルのすべての文字列に一致します。例えば、"/temperatures/+/highest" は、トピック "temperatures/Paris/highest" や "temperatures/Bangkok/highest" に一致しますが、"temperatures/Paris/highest/today" には一致しません。プラス記号は、同じレベル内の他の文字と組み合わせることはできません。
-
# (シャープ記号) — 最後のレベルのみで、任意の文字列および任意のサブトピックに一致します。例えば、"temperatures/Paris/#" は、"temperatures/Paris/highest"、"temperatures/Paris/highest/today"、"temperatures/Paris/lowest/record/thiscentury" のトピックすべてに一致します。
-
-
ビジネス・サービスで行われる MQTT アクションをトレースする場合は、[トレース] プロパティにチェックを付け、[TraceLevel] プロパティを設定します。MQTT トレース・メッセージは、ビジネス・サービスのプロダクション・ログに書き込まれます。[TraceLevel] では以下の値を扱うことができます。
-
0 — MQTTCLIENTTRACEMAXIMUM、最大レベルのトレース。
-
1 — MQTTCLIENTTRACEMEDIUM、中レベルのトレース。
-
2 — MQTTCLIENTTRACEMINIMUM、最小レベルのトレース。
-
3 — MQTTCLIENTTRACEPROTOCOL、プロトコル・レベルのトレース。
-
4 — MQTTCLIENTTRACEERROR、エラーのみのトレース。
-
5 — MQTTCLIENTTRACESEVERE、サーバ・エラーのみのトレース。
-
6 — MQTTCLIENTTRACEFATAL、致命的なエラーのみのトレース。
-
-
[URL] プロパティを、ブローカの URL とポート番号で設定します。 “tcp” または “ssl” の後にドメイン名とポートを “:” で区切って続けます (例 : “tcp://MQTTBroker.example.com:1883”)。通常、TLS 対応のエンド・ポイントは 8883 のポートを使用して構成されますが、これは必須ではありません。
-
-
[基本設定] でビジネス・サービスを有効にします。
-
プロダクションを実行します。
TLS の使用時は、証明書ファイルへの相対パスではなく、絶対パスを使用する必要があります。詳細は、"セキュリティ管理ガイド" の “TLS 構成の作成または編集” を参照してください。
パススルー・ビジネス・オペレーションの追加と構成
ビジネス・オペレーションをプロダクションに追加するには、管理ポータルを使用して相互運用対応ネームスペースで以下の操作を行います。
-
MQTT ブローカでユーザ名/パスワード認証を使用している場合、まず、その情報で認証情報を定義する必要があります (管理ポータルの [Interoperability]→[構成する]→[認証情報])。TLS 認証を使用している場合は、"セキュリティ管理ガイド" の “TLS ガイド” を参照してください。
-
EnsLib.MQTT.Operation.PassthroughOpens in a new tab ビジネス・オペレーション・クラスのインスタンスをプロダクションに追加します。
-
メッセージを発行できるようにビジネス・オペレーションを構成します。
-
オプションで [CleanSession] プロパティを設定します。[CleanSession] プロパティにチェックが付けられている場合、ブローカは接続から次の接続までの間、セッションについての情報を保持しません。
-
[ClientID] プロパティを設定します。これはブローカに対するクライアントを指定します。ASCII でエンコードされ、長さが 1 ~ 23 文字である必要があります。ブローカへの接続を切断してから再接続する場合、ClientID が同じであれば、ブローカはその ID 情報を保持します。[ClientID] フィールドを空のままにすると、クライアントによって一意のクライアント ID が割り当てられます。
-
[ConnectTimeout] プロパティを設定します。これは、ビジネス・サービスがブローカからの応答確認を待機する秒数を設定します。
-
ログイン認証情報を使用している場合、[CredentialsName] プロパティを手順 1 で定義した認証情報名に設定します。
-
[KeepAlive] プロパティを、クライアントからブローカへのメッセージの最大間隔 (秒数) に設定します。
-
オプションで、[LWTTopic] および [LWTMessage] プロパティを設定します。これらは、接続の Last Will and Testament (遺言) メッセージを設定します。接続が予期せずに失われたことをブローカが検出すると、これは指定したトピックとメッセージを使用してメッセージを発行します。
-
[QOS] プロパティを設定します。これによって、ブローカとの接続におけるサービス品質が設定されます。値が 0 の場合、ビジネス・オペレーションはブローカからの確認応答を待機しないことを意味し、値が 1 の場合、ビジネス・オペレーションはブローカがメッセージを受信したという確認応答を待機することを意味します。
-
保持するメッセージを発行する場合、[Retained] プロパティにチェックを付けます。各サブスクリプションで保持されるメッセージは 1 つのみです。これは、最初のサブスクライバに送信されるメッセージです。その他のメッセージは、サブスクリプションが開始された後で発行される場合にのみ、サブスクライバに送信されます。
-
TLS セキュリティを使用している場合は、[SSLConfigName] を TLS 構成の名前に設定します。
-
[QOS] を 1 に設定した場合、[タイムアウト] プロパティを、ビジネス・サービスが確認応答を待機する秒数に設定します。
-
[トピック] プロパティを設定します。これにより、メッセージの発行に使用するデフォルトのトピックが指定されます。トピックは通常、サブトピックのレベルが / (スラッシュ) で区切られた階層文字列です。オペレーションは、その入力パラメータで指定されたトピックを使用します。入力パラメータにトピックが含まれていない場合、デフォルトのトピックが使用されます。メッセージの発行時、トピックにワイルドカードを含めることはできません。
-
ビジネス・サービスやビジネス・オペレーションで行われる MQTT アクションをトレースする場合は、[トレース] プロパティを選択して、[TraceLevel] プロパティを設定します。MQTT トレース・メッセージは、プロダクション・ログに書き込まれます。[TraceLevel] では以下の値を扱うことができます。
-
0 — MQTTCLIENTTRACEMAXIMUM、最大レベルのトレース。
-
1 — MQTTCLIENTTRACEMEDIUM、中レベルのトレース。
-
2 — MQTTCLIENTTRACEMINIMUM、最小レベルのトレース。
-
3 — MQTTCLIENTTRACEPROTOCOL、プロトコル・レベルのトレース。
-
4 — MQTTCLIENTTRACEERROR、エラーのみのトレース。
-
5 — MQTTCLIENTTRACESEVERE、サーバ・エラーのみのトレース。
-
6 — MQTTCLIENTTRACEFATAL、致命的なエラーのみのトレース。
-
-
[URL] プロパティを、ブローカの URL とポート番号で設定します。 “tcp” または “ssl” の後にドメイン名とポートを “:” で区切って続けます (例 : “tcp://MQTTBroker.example.com:1883”)。通常、TLS 対応のエンド・ポイントは 8883 のポートを使用して構成されますが、これは必須ではありません。
-
-
[基本の設定] でビジネス・オペレーションを有効にします。
-
プロダクションを実行します。
TLS の使用時は、証明書ファイルへの相対パスではなく、絶対パスを使用する必要があります。詳細は、"セキュリティ管理ガイド" の “TLS 構成の作成または編集” を参照してください。
MQTT メッセージの形式
パススルー・ビジネス・サービスが EnsLib.MQTT.MessageOpens in a new tab メッセージを送信し、パススルー・ビジネス・オペレーションが EnsLib.MQTT.MessageOpens in a new tab メッセージを受信します。EnsLib.MQTT.MessageOpens in a new tab クラスは、Ens.StringContainerOpens in a new tab クラスに [トピック] プロパティを追加して拡張されたものです。MQTT トピックは、[トピック] プロパティに格納され、MQTT メッセージは、文字列コンテナ値に格納されます。