SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

MQTT Client Development

APC接続タイプ(WebSocketまたはTCPソケット)に関係なく、ABAPでMQTTクライアントアプリケーションを開発するには、以下の手順が必要です。

  1. MQTTイベントハンドラーを実装します。

    MQTTイベントハンドラーを実装するには、インターフェースIF_MQTT_EVENT_HANDLERを実装する必要があります。システムはMQTTイベントハンドラーメソッドを呼び出して、アプリケーションに確認応答と着信メッセージを処理させます。アプリケーションは、次のイベントハンドラーメソッドを実装できます。

    IF_MQTT_EVENT_HANDLER

    方法

    説明

    ON_CONNECT 接続設定が成功した後に呼び出されます
    ON_DISCONNECT 切断後に呼び出されます(意図された切断またはエラーのいずれか)
    ON_MESSAGE MQTTを受信すると呼び出され、メッセージを公開します
    ON_PUBLISH MQTT、公開確認応答(QoS 1)を受信したとき、またはQoS0でメッセージを公開した直後に呼び出されます
    ON_SUBSCRIBE MQTTを受信すると呼び出され、確認応答をサブスクライブします
    ON_UNSUBSCRIBE MQTTを受信すると呼び出され、確認応答のサブスクライブを解除します

    着信メッセージおよびイベントを処理するには、既存のABAPセッションがアイドル状態または待機状態である必要があります。この状態は、たとえば、このセッションの要求がない場合に暗黙的に開始することも、ABAPWAITステートメントを使用して明示的に開始することもできます。クライアントにAPCイベントを明示的に待機させるには、ステートメントを使用できますWAIT FOR PUSH CHANNELS UNTIL <log expression> [<UP TO <seconds> SECONDS]

  2. MQTTクライアントオブジェクトを作成します。

    MQTTクライアントオブジェクトのタイプはIF_MQTT_CLIENTであり、ファクトリクラスCL_MQTT_CLIENT_MANAGERを使用して作成する必要があります2つの異なるクライアントファクトリメソッドがあります。

    • CL_MQTT_CLIENT_MANAGER〜CREATE_BY_DESTINATION(MQTT WebSocketベースのクライアント通信用)。
    • CL_MQTT_CLIENT_MANAGER〜CREATE_BY_URL( WebSocketとTCPソケットベースのMQTT通信の両方)。次のURLプレフィックスを使用して、適切な基盤となるプロトコルを選択できます。
      • WebSocketおよびSecureWebSocketの場合はws://およびwss://
      • TCPソケットおよびセキュアTCPソケットの場合はtcp://およびtcps://

    CREATE_BY_DESTINATIONの場合、トランザクションでタイプ’G’(外部サーバーへのHTTP接続)の宛先を更新する必要がありますSM59[宛先のログオンとセキュリティ]タブでは、オプションで、MQTTブローカーでの接続フェーズ中に可能な認証のためにMQTTユーザーとパスワードを維持できます。

    これらの接続パラメーターに加えて、最初のステップで実装したイベントハンドラーをファクトリメソッドに渡す必要があります。

  3. MQTTクライアントオブジェクトを使用します。ファクトリメソッドが正常に実行されると、タイプIF_MQTT_CLIENTのMQTTクライアントオブジェクトが提供されますこのオブジェクトは、次のメソッドを提供します。
    IF_MQTT_CLIENT

    方法

    説明

    CONNECT MQTTブローカーへの接続を開きます
    DISCONNECT MQTTブローカーへの接続を閉じます
    PUBLISH MQTTメッセージを公開します(QoS 0および1がサポートされています)
    SUBSCRIBE 指定されたQoSを含むトピックフィルタのリストをサブスクライブします(QoS 0および1がサポートされています)
    UNSUBSCRIBE トピックフィルターのリストの購読を解除します
    GET_PENDING_ENVELOPES_PUBLISH 保留中の確認応答、つまりQoS 1で公開されたが、受信がまだブローカーによって確認されていないメッセージを公開エンベロープに提供します。
    GET_CONTEXT MQTTクライアントの接続属性を提供します

    このメソッドIF_MQTT_CLIENT~CONNECTはMQTT接続を確立します。このメソッドは、接続のAPCおよびMQTTステップに追加の接続オプションを指定するためのオプションのインポートパラメーターを提供します。パラメータI_APC_CONNECT_OPTIONSを使用すると、アプリケーションでAPC接続オプションを指定できます。たとえば、接続セットアップのタイムアウトや、発信および着信MQTTメッセージのウイルススキャンプロファイルなどです。パラメーターI_MQTT_CONNECT_OPTIONSを使用すると、アプリケーションはMQTT関連のオプション(MQTTユーザー名とパスワード、MQTT接続の維持時間間隔、MQTT「WillMessage」など)を指定できます。

    MQTTクライアントオブジェクトのメソッドPUBLISH、、、SUBSCRIBEおよびUNSUBSCRIBEは、オプションのエクスポートパラメータE_ENVELOPEを提供します。タイプは、それぞれのメソッドのIF_MQTT_ENVELOPE_PUBLISHIF_MQTT_ENVELOPE_SUBSCRIBE、またはIF_MQTT_ENVELOPE_UNSUBSCRIBEです。エンベロープには、送信されたMQTTパケットに対して確認応答パケットがすでに受信されているかどうかの情報が格納されます。エンベロープごとに、この情報はメソッドを介して取得できますGET_CONFIRMATION_STATEABAPセッションが送信されたパケットの確認応答を処理するとすぐに、その確認状態が「処理中」から「完了」に変わります。メッセージのエンベロープを区別するために、各エンベロープには、MQTT接続ごとに一意のメッセージ番号(タイプINT8)が含まれています。この接続IDとメッセージ番号のペアは、ABAPシステムがMQTTブローカーと交換するMQTTアクションの一意の識別子として使用できます。エンベロープごとに、メソッドを使用してメッセージ番号を取得できますGET_MESSAGE_NUMBER

    MQTTクライアントオブジェクトのメソッドGET_PENDING_ENVELOPES_PUBLISHは、確認状態「処理中」にある送信済み公開パケットのすべてのエンベロープのリストを返します。このメソッドの目的は、MQTTクライアントがブローカーから切断された場合に、保留中のすべてのメッセージを簡単に取得することです。アプリケーションは、ブローカーへの接続が確立されるとすぐにメッセージを再送信するために、この情報を保存したい場合があります。

    MQTTクライアントオブジェクトのメソッドGET_CONTEXTは、他のAPC接続の場合と同等の方法でMQTTクライアントの接続に関する情報を提供します。コンテキストには、次の情報が含まれています。
    • 接続の最初のHTTP要求(TCPソケットの場合、Internet Communication Manager(ICM)への内部HTTP要求があります)

    • 接続ID(IDは拡張パスポート(EPP)にも記載されています)

    • 接続状態

タイトルとURLをコピーしました