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";
ConcurrentHashMap trackMap =
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 © 2023 Avaya. All rights reserved.