public class SampleCBClient extends Object
MessageReceiver
. import java.util.concurrent.ConcurrentHashMap; import com.avaya.collaboration.bus.CollaborationBusException; import com.avaya.collaboration.bus.CollaborationBusMessage; import com.avaya.collaboration.bus.CollaborationBusMessageHandler; import com.avaya.collaboration.bus.CollaborationBusMessageHeader; import com.avaya.collaboration.bus.factory.CollaborationBusFactory; import com.avaya.collaboration.businessdata.api.ServiceData; import com.avaya.collaboration.bus.MessageReceiver; import com.avaya.collaboration.bus.PreSendMessageHandler; import com.avaya.zephyr.platform.dal.api.ServiceDescriptor; import com.avaya.zephyr.platform.dal.api.ServiceUtil; This Sample CB Client illustrates how a collaboration client might send messages to a CB connector and correlate responses. It sends two sets of lottery picks to the LOTTERY_CHANNEL. Each set of numbers is put into the message type field of the header. It correlates the responses using a hash map and waits for two responses. The response messages has either winner or loser in message type. When a response message comes in, it gets the message type from the request message and prints the result. public class SampleCBClient implements MessageReceiver, PreSendMessageHandler { private int responses = 0; final private String favorite1 = "3 5 7 11 28"; final private String favorite2 = "13 18 24 26 45"; final private String LOTTERY_CHANNEL = "lottery"; ConcurrentHashMaptrackMap = new ConcurrentHashMap (); void sendFavorites() { byte[] noBody = new byte[1]; body[0] = '0'; // check my lottery numbers with lottery connector ServiceDescriptor sd = ServiceUtil.getServiceDescriptor(); CollaborationBusMessageHandler cbHandler = CollaborationBusFactory.getCollaborationBusMessageHandlerInstance(sd.getName(), sd.getVersion()); // register as listener for responses cbHandler.registerResponseListener(LOTTERY_CHANNEL,this); try { // Message type for LOTTERY_CHANNEL is the string of numbers to check cbHandler.sendMessage(favorite1, LOTTERY_CHANNEL, noBody, null, this); cbHandler.sendMessage(favorite2, LOTTERY_CHANNEL, nobody, null, this); } catch (CollaborationBusException e) { e.printStackTrace(); } // wait for 2 responses while (responses < 2) { try { Thread.sleep(10000); } catch (InterruptedException e) { } } } public void handle(final CollaborationBusMessageHeader hdr) { // add header to map for correlation trackMap.put(hdr.getMessageSequenceId(), hdr); } public void messageReceived(final CollaborationBusMessage responseMessage) { // see if it is one of my messages CollaborationBusMessageHeader hdr = (CollaborationBusMessageHeader) trackMap.get(responseMessage.getHeader().getResponseToSequenceId()); if (hdr == null) { // not my message return; } responses++; // it was a response to one of my messages, see if winner (MessageType // holds result) if (responseMessage.getHeader().getMessageType().equals("winner")) { System.out.println("My numbers " + hdr.getMessageType() + " won 1 million dollars."); } else { System.out.println("My numbers " + hdr.getMessageType() + " lost again."); } } }
Copyright © 2016 Avaya. All Rights Reserved.