ActiveMQ+Spring的JMS解决方案(一)

入门篇,高手绕道。呵呵
  ActiveMQ和jms的特性
  jms特点:
  (1)可以把不影响用户执行结果又比较耗时的任务(比如大批量发邮件,发短信)异步的扔给jms 服务端,
  而尽快的把屏幕返还给用户,且服务端能够多线程排队响应高并发的请求。
  (2)可以在java世界里达到最高的解耦。客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多
  少人,只要对流过的信息作响应就行了,在企业应用环境复杂时作用明显。
  ActiveMQ的特点:
  (1)不需要实现ejb繁琐复杂的message bean接口和配置。
  (2)可以使用spring的各种特性如ioc、aop 。
  (3)基于jencks的jca container实现 pool connection,control transactions and manage security。

  一个jms场景通常需要三者参与:
 一个pojo的的message producer,负责使用spring的jms template发送消息。
 一个message converter,负责把java对象转化为消息,使得producer能够直接发送pojo。
 一个mdp message consumer,负责接收并处理消息。
 
  本例中给出一个使用activemq实现的有助于加深对jms机制理解的简单例子。
  首先下载activemq 下载地址

   http://www.apache.org/dyn/closer.cgi/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz
  运行 mq目录\bin\activemq.bat ,启动mq服务。
  1 生产者代码

package com.travelsky.jms;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;

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

/**
 * @author songning
 */

public class JMSProducer {

    /**
     * @param args
     * @throws JMSException 
     */
    public static void main(String[] args) throws JMSException {

        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection conn = factory.createConnection();
        conn.start();
        Queue queue = new ActiveMQQueue("helloQueue");
        final Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        MessageProducer producer = session.createProducer(queue);
        for(int i=0;i<10;i++)
        {
            producer.send(session.createTextMessage("hello world"+i));
        }
        System.out.println("send over");
    }
}


 
  2消费者代码

package com.travelsky.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.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

/**
* @author songning
*/

public class Consumer {

   /**
    * @param args
    * @throws JMSException 
    */
   public static void main(String[] args) throws JMSException {
       ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
       Connection conn = factory.createConnection();
       conn.start();
       Queue queue = new ActiveMQQueue("helloQueue");
       final Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
       MessageConsumer consumer = session.createConsumer(queue);
       consumer.setMessageListener(new MessageListener(){
           @Override
           public void onMessage(Message msg1){
               System.out.println(msg1.toString());
           }
       });
   }

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值