Message sinks are somewhat simpler than message sources. A message sink must implement the atg.dms.patchbay.MessageSink interface. This interface defines a single method, receiveMessage, which is called to notify the message sink that a message is being delivered. This method might be called simultaneously by many threads, so the message sink should be coded accordingly. The following is a simple example of how a message sink might handle a message:
import atg.dms.patchbay.*;
import javax.jms.*;
...
public void receiveMessage (String pPortName, Message pMessage)
throws JMSException
{
System.out.println ("Received message from port " +
pPortName +
" of JMSType " +
pMessage.getJMSType ());
if (pMessage instanceof TextMessage) {
System.out.println (" TextMessage, value = \"" +
((TextMessage) pMessage).getText () +
"\"");
}
else if (pMessage instanceof ObjectMessage) {
System.out.println (" ObjectMessage, value = \"" +
((ObjectMessage) pMessage).getObject () +
"\"");
}
else if (pMessage instanceof MapMessage) {
System.out.println (" MapMessage");
}
else if (pMessage instanceof StreamMessage) {
System.out.println (" StreamMessage");
}
else if (pMessage instanceof BytesMessage) {
System.out.println (" BytesMessage");
}
}This example just prints out a text string whenever it receives a message, including the port name (described in the Using Messaging Ports section of this chapter), the JMSType, and some additional information depending on the actual subclass of the message.

