この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

チャネルへの登録およびイベント通知の受信

EMP コネクタを使用して、以前定義した Low_Ink__e カスタムプラットフォームイベントのチャネルに登録します。
  1. /src/main/java/com/salesforce/emp/connector/example フォルダで、LoginExample.java ソースファイルを開きます。
    1/* 
    2 * Copyright (c) 2016, salesforce.com, inc.
    3 * All rights reserved.
    4 * Licensed under the BSD 3-Clause license. 
    5 * For full license text, see LICENSE.TXT file in the repo root  or https://opensource.org/licenses/BSD-3-Clause
    6 */
    7package com.salesforce.emp.connector.example;
    8
    9import static com.salesforce.emp.connector.LoginHelper.login;
    10
    11import java.net.URL;
    12import java.util.Map;
    13import java.util.concurrent.TimeUnit;
    14import java.util.function.Consumer;
    15
    16import com.salesforce.emp.connector.BayeuxParameters;
    17import com.salesforce.emp.connector.EmpConnector;
    18import com.salesforce.emp.connector.LoginHelper;
    19import com.salesforce.emp.connector.TopicSubscription;
    20
    21/**
    22 * An example of using the EMP connector using login credentials
    23 */
    24public class LoginExample {
    25    public static void main(String[] argv) throws Exception {
    26        if (argv.length < 3 || argv.length > 4) {
    27            System.err.println(
    28                "Usage: LoginExample username password channel [replayFrom]");
    29            System.exit(1);
    30        }
    31        long replayFrom = EmpConnector.REPLAY_FROM_EARLIEST;
    32        if (argv.length == 4) {
    33            replayFrom = Long.parseLong(argv[3]);
    34        }
    35
    36        BearerTokenProvider tokenProvider = new BearerTokenProvider(() -> {
    37            try {
    38                return login(argv[0], argv[1]);
    39            } catch (Exception e) {
    40                e.printStackTrace(System.err);
    41                System.exit(1);
    42                throw new RuntimeException(e);
    43            }
    44        });
    45
    46        BayeuxParameters params = tokenProvider.login();
    47
    48        Consumer<Map<String, Object>> consumer = event -> 
    49            System.out.println(String.format("Received:\n%s", event));
    50
    51        EmpConnector connector = new EmpConnector(params);
    52
    53        connector.setBearerTokenProvider(tokenProvider);
    54
    55        connector.start().get(5, TimeUnit.SECONDS);
    56
    57        TopicSubscription subscription = connector.subscribe(
    58            argv[2], replayFrom, consumer).get(5, TimeUnit.SECONDS);
    59
    60        System.out.println(String.format("Subscribed: %s", subscription));
    61    }
    62}
  2. LoginExample クラスを実行し、次の引数を指定します。
    1. Package Explorer で、LoginExample.java ファイルに移動します。ファイルを右クリックし、[Run As (別のユーザとして実行)] | [Run Configurations (設定の実行)] を選択します。
    2. [Arguments (引数)] タブで、次の引数の値をスペースで区切って入力します。
      引数
      username 自分の Salesforce ユーザ名
      password 自分の Salesforce パスワード
      channel イベントのチャネル名: /event/Low_Ink__e
    3. [Run (実行)] をクリックします。

    サンプルがイベントチャネルに登録され、イベント通知をリスンし始めます。イベント通知が生成されて受信されるとすぐに、ツールがイベント通知をコンソールに出力します。

    このサンプルでは、過去 24 時間以内で最も早く保存されたイベントを取得します。必要に応じて、異なるイベントを受信するために、最後の引数として再実行 ID を含めることができます。有効な値は、次のとおりです。
    • -1 — 登録後に送信されたすべての新規イベントを取得します。
    • -2 — 登録後に送信されたすべての新規イベントおよび過去 24 時間以内のすべての過去のイベントを取得します。
    • 特定の番号 — 指定された再実行 ID を持つイベントより後に発生したすべてのイベントを取得します。
  3. カスタムプラットフォームのイベントメッセージを生成するには、開発者コンソールで Apex を実行し、イベントメッセージを公開します。
    1. Salesforce Classic では、あなたの名前 | [開発者コンソール] をクリックします。
    2. Lightning Experience では、クイックアクセスメニュー (設定ギアアイコン) をクリックし、[開発者コンソール] を選択します。
    3. 開発者コンソールで、[Debug (デバッグ)] | [Open Execute Anonymous Window (実行匿名ウィンドウを開く)] を選択します。
    4. 新しいウィンドウで、任意のコードを次の Apex スニペットで置き換えます。このスニペットは、プラットフォームイベントを公開します。
      1// Create event instance.
      2Low_Ink__e event = new Low_Ink__e(Printer_Model__c='XZO-5', Serial_Number__c='12345', 
      3              Ink_Percentage__c=0.2);
      4
      5// Publish event.
      6Database.SaveResult sr = EventBus.publish(event);
      7
      8// Inspect publishing result for each event
      9if (sr.isSuccess()) {
      10    System.debug('Successfully published event.');
      11} else {
      12    for(Database.Error err : sr.getErrors()) {
      13        System.debug('Error returned: ' +
      14                    err.getStatusCode() +
      15                    ' - ' +
      16                    err.getMessage());
      17    }
      18}
    5. [Execute (実行)] をクリックします。プラットフォームイベントが公開されると、EMP コネクタがイベント通知を受信し、イベント通知はコンソールに出力されます。出力は次のようになります。
      1Subscribed: Subscription [/event/Low_Ink__e:-2]
      2Received:
      3{"schema":"3l1laWb62nM8omMU0waLdg",
      4"payload":{"Serial_Number__c":"12345","CreatedById":"00550000001N45jAAC",
      5"CreatedDate":"2018-08-15T21:49:44Z","Ink_Percentage__c":0.2,
      6"Printer_Model__c":"XZO-5"},"event":{"replayId":1}}

一般的に、本番環境でコードを実行するときには、他のユーザのユーザ名とパスワードを処理しないようにします。本番環境では、ログインを OAuth に委任してください。BearerTokenExample.java クラスでは OAuth 認証が使用されます。

メモ