配置消息目标地址
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: oil-service.xml 38188 2005-11-17 00:11:34Z adrian $ -->
<server>
<!-- JBossMQ communication using the Optimizated Invocation Layer
The server connects back to the client on a different socket -->
<mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=chatTopic">
<depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
<attribute name="JNDIName">topic/chatTopic</attribute>
</mbean>
</server>
接受消息
package com.java;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/mytopic") })
public class MyMDBBean implements MessageListener {
public void onMessage(Message msg) {
try {
TextMessage textMessage = (TextMessage) msg;
System.out.println("MyTopicMDBBean被调用了【" + textMessage.getText()
+ "】");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
创建消息生产者
<%@ page language="java"
import="java.util.*,javax.naming.*,java.text.*,javax.jms.*,java.util.Properties"
pageEncoding="UTF-8"%>
<%
InitialContext ctx = new InitialContext();
//获取ConnectionFactory对象
TopicConnectionFactory factory = (TopicConnectionFactory) ctx
.lookup("ConnectionFactory");
//创建TopicConnection对象
TopicConnection connection = factory.createTopicConnection();
//创建TopicSession对象,第一个参数表示事务自动提交,第二个参数标识一旦消息被正确送达,将自动发回响应
TopicSession sess = connection.createTopicSession(false,
TopicSession.AUTO_ACKNOWLEDGE);
//获得Destination对象
Topic topic = (Topic) ctx.lookup("topic/mytopic");
//创建文本消息
TextMessage msg = sess.createTextMessage("世界,你好");
//创建发布者
TopicPublisher publisher = sess.createPublisher(topic);
//发送消息
publisher.publish(msg);
//关闭会话
sess.close();
%>