一 点对点发送消息:

首先配置文件XX_service.xml放到 到jboss-4.2.2.GA\server\default\deploy中

配置代码如下:

<server>  
  <mbean code="org.jboss.mq.server.jmx.Queue"
         name="jboss.mq.destination:service=Queue,name=xiaoyi">
    <attribute name="JNDIName">queue/xiaoyi</attribute>   
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
</server>

新建一ejb工程,建一工具类(主要用来加载context)代码如下:

public static Context getcontext(){
        
        Context cx = null;
                Properties pro = new Properties();
        pro.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
        pro.setProperty(Context.PROVIDER_URL, "localhost:1099");
        try {
            cx = new InitialContext(pro);
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return cx;   
    }  

 建一消息发送类;发送代码如下:

Context cx = null; //用来获得应用上下文  
        try {
            cx = JDBIUtil.getcontext();//调用工具文件,加载文本信息,连接到服务器,
            QueueConnectionFactory connfactory = (QueueConnectionFactory) cx.lookup("QueueConnectionFactory");// 获得链接工厂
            
            QueueConnection conn = connfactory.createQueueConnection();// 获得链接
            
            QueueSession qs = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);//创建会话
            
            Destination ds = (Destination) cx.lookup("queue/xiaoyi");//获得消息发送目的地
            
            TextMessage tm = qs.createTextMessage("测试信息"); //发送的内容
            
            MessageProducer mp = qs.createProducer(ds); //发送消息
            mp.send(tm);
            System.out.println("发送消息.....");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
}

监听消息,用来接收消息,新建一个EJB MESSAGE DRIVE BEAN,代码如下:
package org.pxw.util;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(mappedName = "jms/MDBTest", activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName="destination",propertyValue="queue/xiaoyi")//消息地址
})
public class MDBTest implements MessageListener {

    @Override
    public void onMessage(Message msg) {
        // TODO Auto-generated method stub

        TextMessage tm = (TextMessage) msg;
        
        System.out.println("的到的值:"+tm);
        
    }

}
二 消息订阅
同上在XX-service.xml中加上如下配置代码:
 <mbean code="org.jboss.mq.server.jmx.Topic"
     name="jboss.mq.destination:service=Topic,name=pxw">
    <attribute name="JNDIName">topic/pxw</attribute>
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>

消息发送类的代码:

Context cx = null;
        
        cx = Jndiutil.getcontext();
        
        try {
            TopicConnectionFactory  connFactory = (TopicConnectionFactory) cx.lookup("TopicConnectionFactory");
            
            TopicConnection conn = connFactory.createTopicConnection();
            
            Destination destination = (Destination) cx.lookup("topic/pxw");
            
            TopicSession session = conn.createTopicSession(false, QueueSession.AUTO_ACKNOWLEDGE);
            
            TextMessage tm = session.createTextMessage("topic.Test测试内容");
            
            MessageProducer mp = session.createProducer(destination);
            
            mp.send(tm);
            
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        

消息接收类的代码,注意在创建EJB MESSAGE DRIVER BEAN时 Destination Type选择topic:

 

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@MessageDriven(mappedName = "jms/TopidMDB", activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "clientId", propertyValue = "TopidMDB"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "TopidMDB"),
        @ActivationConfigProperty(propertyName="destination",propertyValue="topic/pxw")
})
public class TopidMDB implements MessageListener {

    @Override
    public void onMessage(Message message) {
        // TODO Auto-generated method stub
        
        TextMessage tx = (TextMessage) message;
        
        System.out.println(tx);
    }

}

 

 

 

 

 
posted on 2012-05-30 10:09  断肠夕阳丿  阅读(319)  评论(0编辑  收藏  举报