MQ05

トピック送信
Pub/Sub通信

imqadmin
送信先名testtopic、送信先タイプトピックを作成。


Publisher側



package TestMQ;

import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;

import com.sun.messaging.ConnectionConfiguration;
import com.sun.messaging.TopicConnectionFactory;

public class TestSendTopic {

public static void main(String[] args) throws Exception {

TopicConnectionFactory tcf = new TopicConnectionFactory();
tcf.setProperty( ConnectionConfiguration.imqAddressList, "localhost:7676" );
TopicConnection tcon = tcf.createTopicConnection();
//送信準備
TopicSession tsess = tcon.createTopicSession( false, Session.AUTO_ACKNOWLEDGE );
Topic topic = tsess.createTopic( "testtopic" );
TopicPublisher publisher = tsess.createPublisher( topic );

//送信
TextMessage msg = tsess.createTextMessage();
msg.setText("TEST pub/sub");
msg.setStringProperty("numberXX", "100" );
publisher.publish( msg );

//切断
publisher.close();
tsess.close();
tcon.close();

}

}


Subscriber側



package TestMQ;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;

import com.sun.messaging.ConnectionConfiguration;
import com.sun.messaging.TopicConnectionFactory;

public class TestRecvTopic implements MessageListener {

private static TopicConnection tcon = null;

public static void main(String[] args) throws Exception {

TopicConnectionFactory tcf = new TopicConnectionFactory();
tcf.setProperty( ConnectionConfiguration.imqAddressList, "localhost:7676" );
tcon = tcf.createTopicConnection();
//受信準備
TopicSession tsess = tcon.createTopicSession( false, Session.AUTO_ACKNOWLEDGE );
Topic topic = tsess.createTopic( "testtopic" );
TopicSubscriber subscriber = tsess.createSubscriber(topic);

//受信
subscriber.setMessageListener( new TestRecvTopic() );

//START
tcon.start();

}

public void onMessage(Message message) {
try {
TextMessage mess = (TextMessage) message;
String text = mess.getText();
String prop = mess.getStringProperty( "numberXX" );

System.out.print( text );
System.out.print( " " );
System.out.println( prop );
System.out.println( message );

} catch ( JMSException e ) {
e.printStackTrace();
try {
tcon.stop();
} catch (JMSException e1) {
e1.printStackTrace();
}

} catch ( Exception e ){
}
}

}