Newer Version Available
Run a Java Client with Username and Password Login
Run a Java client that uses EMP Connector to subscribe to the channel with username and
password authentication.
- Get the EMP Connector project from GitHub. See Download and Build the Project.
-
Under the /src/main/java/
folder, open the LoginExample.java Java source file
from the example package folder.
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.util.Map; 12import java.util.concurrent.TimeUnit; 13import java.util.function.Consumer; 14 15import com.salesforce.emp.connector.BayeuxParameters; 16import com.salesforce.emp.connector.EmpConnector; 17import com.salesforce.emp.connector.TopicSubscription; 18 19/** 20 * An example of using the EMP connector using login credentials 21 * 22 * @author hal.hildebrand 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("Usage: LoginExample username password topic [replayFrom]"); 28 System.exit(1); 29 } 30 long replayFrom = EmpConnector.REPLAY_FROM_EARLIEST; 31 if (argv.length == 4) { 32 replayFrom = Long.parseLong(argv[3]); 33 } 34 35 BayeuxParameters params; 36 try { 37 params = login(argv[0], argv[1]); 38 } catch (Exception e) { 39 e.printStackTrace(System.err); 40 System.exit(1); 41 throw e; 42 } 43 44 Consumer<Map<String, Object>> consumer = event -> System.out.println( 45 String.format("Received:\n%s", event)); 46 EmpConnector connector = new EmpConnector(params); 47 48 connector.start().get(5, TimeUnit.SECONDS); 49 50 TopicSubscription subscription = connector.subscribe(argv[2], 51 replayFrom, consumer).get(5, TimeUnit.SECONDS); 52 53 System.out.println(String.format("Subscribed: %s", subscription)); 54 } 55} -
Run the LoginExample class and provide the following argument
values.
Argument Value username Username of the logged-in user. password Password for the username (or logged-in user). topic /u/notifications/ExampleUserChannel The sample fetches the earliest saved events within the past 24 hours. Optionally, you can supply a replay ID as the last argument to receive different events. Valid values are:- -1—Get all new events sent after subscription.
- -2—Get all new events sent after subscription and all past events within the last 24 hours.
- Specific number—Get all events that occurred after the event with the specified replay ID.
-
When you run this client app and generate notifications
using the REST resource, the output will look something like:
1Subscribed: Subscription [/u/notifications/ExampleUserChannel:-2] 2Received: 3{payload=Broadcast message to all subscribers, event={createdDate=2016-12-13T00:57:36.020Z, replayId=1}} 4Received: 5{payload=Another message, event={createdDate=2016-12-13T00:58:16.591Z, replayId=2}}
Generally, do not handle usernames and passwords of
others when running code in production. In a production environment, delegate the login
to OAuth. The next step connects to Streaming API with
OAuth.