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.


Copyright © 1997, 2012 Oracle and/or its affiliates. All rights reserved.

Legal Notices