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.

 
loading table of contents...