チャネルへの登録およびイベント通知の受信
EMP コネクタを使用して、以前定義した Low_Ink__e カスタムプラットフォームイベントのチャネルに登録します。
-
/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} -
LoginExample クラスを実行し、次の引数を指定します。
- Package Explorer で、LoginExample.java ファイルに移動します。ファイルを右クリックし、 を選択します。
-
[Arguments (引数)] タブで、次の引数の値をスペースで区切って入力します。
引数 値 username 自分の Salesforce ユーザ名 password 自分の Salesforce パスワード channel イベントのチャネル名: /event/Low_Ink__e。 - [Run (実行)] をクリックします。
サンプルがイベントチャネルに登録され、イベント通知をリスンし始めます。イベント通知が生成されて受信されるとすぐに、ツールがイベント通知をコンソールに出力します。
-
カスタムプラットフォームのイベントメッセージを生成するには、開発者コンソールで Apex を実行し、イベントメッセージを公開します。
- Salesforce Classic では、 をクリックします。
-
Lightning Experience では、クイックアクセスメニュー (
) をクリックし、[開発者コンソール] を選択します。
- 開発者コンソールで、 を選択します。
-
新しいウィンドウで、任意のコードを次の 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} - [Execute (実行)] をクリックします。プラットフォームイベントが公開されると、EMP コネクタがイベント通知を受信し、イベント通知はコンソールに出力されます。出力は次のようになります。