j2eeadmin -addJmsFactory jndi_name queue
j2eeadmin -addJmsFactory jndi_name topic
Context ctx = new InitialContext();
QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory) ctx.lookup("QueueConnectionFactory");
TopicConnectionFactory topicConnectionFactory =
(TopicConnectionFactory) ctx.lookup("TopicConnectionFactory");
-----------------------------------------------
j2eeadmin -addJmsDestination queue_name queue
j2eeadmin -addJmsDestination topic_name topic
Topic myTopic = (Topic) ctx.lookup("MyTopic");
Queue myQueue = (Queue) ctx.lookup("MyQueue");
-------------------------------------------------
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();
TopicConnection topicConnection =
topicConnectionFactory.createTopicConnection();
queueConnection.start();
topicConnection.start();
queueConnection.close();
topicConnection.close();
------------------------------------------------
TopicSession topicSession =
topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSession queueSession =
queueConnection.createQueueSession(true, 0);
--------------------------------------------------
QueueSender queueSender = queueSession.createSender(myQueue);
TopicPublisher topicPublisher = topicSession.createPublisher(myTopic);
------------------------------------------------------------
queueSender.send(message);
topicPublisher.publish(message);
--------------------------------------------------------------
QueueReceiver queueReceiver = queueSession.createReceiver(myQueue);
TopicSubscriber topicSubscriber = topicSession.createSubscriber(myTopic);
---------------------------synchronously(阻塞方式)-----------------------------------------
queueConnection.start();
Message m = queueReceiver.receive();
topicConnection.start();
Message m = topicSubscriber.receive(1000); // time out after a second
---------------------------asynchronously(非阻塞方式)-----------------------------------------
TopicListener topicListener = new TopicListener();(自定义的类,实现 MessageListener 接口)
topicSubscriber.setMessageListener(topicListener);
queueConnection.start();/topicConnection.start();
---------------------------------Send-------------------------------------------------
TextMessage message = queueSession.createTextMessage();
message.setText(msg_text); // msg_text is a String
queueSender.send(message);
---------------------------------Receive----------------------------------
Message m = queueReceiver.receive();
if (m instanceof TextMessage) {
TextMessage message = (TextMessage) m;
System.out.println("Reading message: " + message.getText());
} else {
// Handle error
}