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

EMP コネクタの詳細

EMP コネクタのコンポーネントを詳しく見てみましょう。

認証

LoginExample クラスは、デフォルトで、渡されたユーザログイン情報を使用して本番組織にログインします。

初期認証の後、LoginExample は、認証が無効になった場合 (Salesforce セッションが無効になった場合やアクセストークンが取り消された場合など) に再認証を行います。LoginExample は、認証が有効でなくなったときにストリーミング API が送信する 401::Authentication invalid エラーメッセージをリスンします。401 エラーを受信すると、このクラスは再認証を行います。トークンプロバイダは再認証を実行し、EmpConnector.setBearerTokenProvider() メソッドを使用して設定されます。

1BearerTokenProvider tokenProvider = new BearerTokenProvider(() -> {
2    try {
3        return login(argv[0], argv[1]);
4    } catch (Exception e) {
5        e.printStackTrace(System.err);
6        System.exit(1);
7        throw new RuntimeException(e);
8    }
9});
10
11BayeuxParameters params = tokenProvider.login();
12// . . . 
13connector.setBearerTokenProvider(tokenProvider);

OAuth 認証の場合は、BearerTokenExample は、BayeuxParameters コンストラクタを使用して BayeuxParameters クラスのメソッドを上書きし、トークンと URL の値を提供します。

1BayeuxParameters params = new BayeuxParameters() {
2
3    @Override
4    public String bearerToken() {
5        return "<token>";
6    }
7
8    @Override
9    public URL host() {
10        try {
11            return new URL("<URL>");
12        } catch (MalformedURLException e) {
13            throw new IllegalArgumentException(
14                String.format("Unable to create url: %s", argv[0]), e);
15        }
16    }
17};

BearerTokenExample は、再認証をサポートしていませんが、このサポートは追加することができます。再認証は、LoginExample および DevLoginExample にのみ実装されます。

メモ

イベントのリスン

イベントをリスンするために、コネクタはラムダ式の Java イベントを使用します。このステートメントは、受信した各イベント通知のイベントメッセージを出力します。このステートメントをチャネルに登録するステートメントの前に配置します。

1Consumer<Map<String, Object>> consumer = event -> System.out.println(
2        String.format("Received:\n%s", JSON.toString(event)));

チャネルへの登録

EmpConnector クラスは、接続と登録を開始するための機能を公開するメインクラスです。このクラスには、接続を作成する関数、チャネルに登録する関数、登録をキャンセルする関数、接続を停止する関数が���まれています。

1// Instantiate the EMP connector
2EmpConnector connector = new EmpConnector(params);
3
4connector.setBearerTokenProvider(tokenProvider);
5
6// Wait for handshake with Streaming API
7connector.start().get(5, TimeUnit.SECONDS);
8
9// Subscribe to a channel
10// Block and wait for the subscription to succeed for 5 seconds
11TopicSubscription subscription = connector.subscribe("<Channel_Name>", 
12    replayFrom, consumer).get(5, TimeUnit.SECONDS);

登録を終了するには、次の関数をコールします。

1// Cancel a subscription
2subscription.cancel();
3
4// Stop the connector
5connector.stop();

デバッグログ

デバッグを支援するため、LoggingListener クラスは Bayeux メッセージをコンソールに記録します。BearerTokenExample および DevLoginExample はログを使用しますが、LoginExample は使用しません。DevLoginExample は、EMP コネクタ GitHub プロジェクトの一部ですが、このウォークスルーでは取り上げません。詳細については、EMP コネクタの Readme ページを参照してください。