JMS第一个成功例子


配置 activeMQ服务器

下载 activeMQ 地址:http://www.apache.org/dyn/closer.cgi/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz

1 解压缩后 放到了e盘

2 使用cmd 键入E:\apache-activemq-5.2.0\bin\activemq.bat 启动服务器 OK 这是activeMQ开始服务了 下面我们要写JMS程序

JMS程序编写:

1 生产者

package jms;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;

/**
 *
 *
 * @author Shal

 * @date:Jun 11, 2009 11:56:42 AM
 * @version :
 */

public class JMSProducer {

    /**
     * @param args
     * @throws JMSException
     */
    public static void main(String[] args) throws JMSException {
        // TODO Auto-generated method stub
        //activeMQ的默认服务端口是61616 我这里在conf文件夹下的配置文件中改了端口
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.102.24:61618");
        Connection conn = factory.createConnection();
        conn.start();
        Queue queue = new ActiveMQQueue("q");
        Topic topic = new ActiveMQTopic("t");
        final Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Message msg = session.createTextMessage("Hello");
        //设置消费者的回复目标
        msg.setJMSReplyTo(topic);
        MessageProducer producer = session.createProducer(queue);
        for(int i=0;i<10;i++)
        {
            producer.send(session.createTextMessage("msg "+i));
        }
        System.out.println("send over");

        //当消费者接受到消息后回复时 此时这里的生产者又充当了消费者的角色
        MessageConsumer consumer2 = session.createConsumer(topic);
        consumer2.setMessageListener(new MessageListener(){
            @Override
            public void onMessage(Message msg1) {
                // TODO Auto-generated method stub
                try {
                    System.out.println("2 < <"+((TextMessage)msg1).getText());
                } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }
}

2 消费者

package jms;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;

/**
 *
 *
 * @author Shal

 * @date:Jun 11, 2009 8:57:56 AM
 * @version :
 */

public class Consumer {

    /**
     * @param args
     * @throws JMSException
     */
    public static void main(String[] args) throws JMSException {
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.102.24:61618");
        Connection conn = factory.createConnection();
        conn.start();
        Queue queue = new ActiveMQQueue("q");
        final Topic top = new ActiveMQTopic("t");
        final Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        MessageConsumer consumer = session.createConsumer(queue);
        final MessageProducer p = session.createProducer(top);
        consumer.setMessageListener(new MessageListener(){
            @Override
            public void onMessage(Message msg1) {
                try {
                    System.out.println("1 < <"+msg1);
                    MessageProducer p = session.createProducer(top);

                    Message msg = session.createTextMessage("haha");
                    //给回复消息设置目标 这里的目标就是Producer里设置的
                    msg.setJMSDestination(msg1.getJMSReplyTo());
                    p.send(msg);
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
    }

}

--------------------------------------------------------------------------------两个类运行(不分先后)-------------------------------

producer的控制台中输出

send over
2 < 

  
  
原创请看: http://www.gbsou.com/2009/08/11/158.html http://www.cnblogs.com/wpcnblog/archive/2011/07/03/2096994.html 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值