Check out my Salesforce Streaming Spring MVC project
http://cloudsole-streaming.herokuapp.com/
Find the code here:
https://github.com/thysmichels/cloudsole-force.com-streaming-web
Using Salesforce Streaming in Java project:
Push Topic Factory
package com.example.service;
import com.force.sdk.streaming.client.ForceBayeuxClient;
import com.force.sdk.streaming.client.ForceStreamingClientModule;
import com.force.sdk.streaming.client.PushTopicManager;
import com.force.sdk.streaming.exception.ForceStreamingException;
import com.force.sdk.streaming.model.PushTopic;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class PushTopicFactory {
public Injector createInjector(){
Injector injector = Guice.createInjector(new ForceStreamingClientModule());
return injector;
}
public ForceBayeuxClient createClient(Injector injector){
ForceBayeuxClient client = injector.getInstance(ForceBayeuxClient.class);
return client;
}
public PushTopicManager createPushTopManager(Injector injector){
PushTopicManager pushTopicManager = injector.getInstance(PushTopicManager.class);
return pushTopicManager;
}
public PushTopic getTopicByName(PushTopicManager pushTopicManager, String topicName) throws ForceStreamingException{
PushTopic topic = pushTopicManager.getTopicByName(topicName);
return topic;
}
public PushTopic createPushTopic(PushTopicManager pushTopicManager, String name, Double apiVersion, String query, String description){
PushTopic createTopic = pushTopicManager.createPushTopic(new PushTopic(name, apiVersion, query, description));
return createTopic;
}
public PushTopic pushTopicFactory(String topicName) throws ForceStreamingException{
PushTopicFactory pushTopicFactory = new PushTopicFactory();
Injector injector = pushTopicFactory.createInjector();
pushTopicFactory.createClient(injector);
PushTopicManager publicTopicManager = pushTopicFactory.createPushTopManager(injector);
return pushTopicFactory.getTopicByName(publicTopicManager, topicName);
}
public ForceBayeuxClient createPushTopicClientFactory(){
PushTopicFactory pushTopicClientFactory = new PushTopicFactory();
ForceBayeuxClient fbClient = pushTopicClientFactory.createClient(pushTopicClientFactory.createInjector());
return fbClient;
}
}
Streaming Service
package com.example.service;
import java.io.IOException;
import org.cometd.bayeux.Message;
import org.cometd.bayeux.client.ClientSessionChannel;
import org.eclipse.jetty.util.log.Log;
import com.example.service.PushTopicFactory;
import com.force.sdk.streaming.client.ForceBayeuxClient;
import com.force.sdk.streaming.client.PushTopicManager;
import com.force.sdk.streaming.exception.ForceStreamingException;
import com.force.sdk.streaming.model.PushTopic;
import com.google.inject.Injector;
public class StreamingService {
public void pushTopicSubScriber(){
PushTopicFactory pushTopicFactory = new PushTopicFactory();
Injector injector = pushTopicFactory.createInjector();
ForceBayeuxClient client = pushTopicFactory.createClient(injector);
PushTopicManager publicTopicManager = pushTopicFactory.createPushTopManager(injector);
PushTopic createTopic = pushTopicFactory.createPushTopic(publicTopicManager, "NewAccountPushTopic", 27.0, "select Id, Name from Account", "New Push Topic");
PushTopic topic = null;
try {
topic = pushTopicFactory.getTopicByName(publicTopicManager, createTopic.getName());
} catch (ForceStreamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
client.subscribeTo(topic, new ClientSessionChannel.MessageListener()
{
public void onMessage(ClientSessionChannel channel, Message message)
{
Log.info(message.getJSON());
}
});
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Like this:
Like Loading...