O'Reilly - Java Message Service
O'Reilly - Java Message Service
O'Reilly - Java Message Service
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Java</strong> <strong>Message</strong> <strong>Service</strong><br />
When the TopicSubscriber receives a message from its topic, it invokes the on<strong>Message</strong>( )<br />
method of its <strong>Message</strong>Listener objects. The Chat class itself implements the<br />
<strong>Message</strong>Listener interface and implements the on<strong>Message</strong>( ) method:<br />
public class Chat implements javax.jms.<strong>Message</strong>Listener{<br />
...<br />
public void on<strong>Message</strong>(<strong>Message</strong> message){<br />
try{<br />
Text<strong>Message</strong> text<strong>Message</strong> = (Text<strong>Message</strong>)message;<br />
String text = text<strong>Message</strong>.getText( );<br />
System.out.println(text);<br />
} catch (JMSException jmse){jmse.printStackTrace( );}<br />
}<br />
...<br />
}<br />
The Chat class is a <strong>Message</strong>Listener type, and therefore registers itself with the<br />
TopicSubscriber in its constructor:<br />
TopicSubscriber subscriber = subSession.createSubscriber(chatTopic);<br />
subscriber.set<strong>Message</strong>Listener(this);<br />
When the message server pushes a message to the TopicSubscriber, the TopicSubscriber<br />
invokes the Chat object's on<strong>Message</strong>( ) method.<br />
2.1.2.9 The <strong>Message</strong><br />
It's fairly easy to confuse the <strong>Java</strong> <strong>Message</strong> <strong>Service</strong> with its use of a<br />
<strong>Java</strong> event model. JMS is an API for asynchronous distributed<br />
enterprise messaging that spans processes and machines across a<br />
network. The <strong>Java</strong> event model is used to synchronously deliver<br />
events by invoking methods on one or more objects in the same<br />
process that have registered as listeners. The JMS pub/sub model uses<br />
the <strong>Java</strong> event model so that a TopicSubscriber can notify its<br />
<strong>Message</strong>Listener object in the same process that a message has<br />
arrived from the message server.<br />
In the chat example, the Text<strong>Message</strong> class is used to encapsulate the messages we send<br />
and receive. A Text<strong>Message</strong> contains a java.lang.String as its body and is the most<br />
commonly used message type. The on<strong>Message</strong>( ) method receives Text<strong>Message</strong> objects<br />
from the TopicSubscriber. Likewise, the write<strong>Message</strong>( ) method creates and publishes<br />
Text<strong>Message</strong> objects using the TopicPublisher:<br />
public void on<strong>Message</strong>(<strong>Message</strong> message){<br />
try{<br />
Text<strong>Message</strong> text<strong>Message</strong> = (Text<strong>Message</strong>)message;<br />
String text = text<strong>Message</strong>.getText( );<br />
System.out.println(text);<br />
} catch (JMSException jmse){jmse.printStackTrace( );}<br />
}<br />
protected void write<strong>Message</strong>(String text) throws JMSException{<br />
Text<strong>Message</strong> message = pubSession.createText<strong>Message</strong>( );<br />
message.setText(username+" : "+text);<br />
publisher.publish(message);<br />
}<br />
30