ActiveMq池

有两种连接方式

1.Spring  引用

<!-- 配置JMS连接工厂 -->
    <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
        destroy-method="stop">
        <property name="connectionFactory">
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL">
                    <value>failover:(tcp://192.168.2.211:62617,tcp://192.168.2.211:62618,tcp://192.168.2.211:62619)?maxReconnectAttempts=10</value>
                </property>
                <property name="useAsyncSend">
                    <value>true</value>
                </property>
            </bean>
        </property>
    </bean>

2.配置文件

MqUserName=admin
MqPassword=admin
MqUrl=failover:(tcp://192.168.2.211:62617,tcp://192.168.2.211:62618,tcp://192.168.2.211:62619)

3.代码

import java.util.Properties;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.pool.PooledConnectionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ActiveMqUtils {

    private static PooledConnectionFactory factory;

    static{
            //方式一
//             Properties pps = new Properties();
//             String url="",name="",pwd="";
//            try {
//                pps.load(ActiveMqUtils.class.getClassLoader().getResourceAsStream("MqProperty.properties"));
//                url = pps.getProperty("MqUrl");
//                name = pps.getProperty("MqUserName");
//                pwd = pps.getProperty("MqPassword");
//                ActiveMQConnectionFactory   activeMQConnectionFactory = new ActiveMQConnectionFactory();
//                activeMQConnectionFactory.setUserName(name);
//                activeMQConnectionFactory.setPassword(pwd);
//                activeMQConnectionFactory.setBrokerURL(url);
//
//                factory = new PooledConnectionFactory( activeMQConnectionFactory);  

                // session数
//                int maximumActive = 5;
//                factory.setMaximumActiveSessionPerConnection(maximumActive);
//                factory.setIdleTimeout(120);
//                factory.setMaxConnections(5);
//                factory.setBlockIfSessionPoolIsFull(true);
//            } catch (Exception e) {
//                e.printStackTrace();
//            } 

          //方式二
            String[] springConfigFiles = {"mybatis-spring-config.xml","module-service-config.xml" };
            ApplicationContext ctx = new ClassPathXmlApplicationContext( springConfigFiles );
            factory = (PooledConnectionFactory) ctx.getBean( "connectionFactory" );
    }

    public static void doSend(String  key,String message){
        Connection connection =null;
        Session session;
        Destination destination;
        MessageProducer producer;
        try {
            connection =factory.createConnection();
            connection.start();
            session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
            destination = session.createQueue(key);
            producer = session.createProducer(destination);
            producer.setDeliveryMode(DeliveryMode.PERSISTENT);
            TextMessage msgObj = session .createTextMessage(message);
            producer.send(msgObj);
            session.commit();
        }catch (Exception e) {
            e.printStackTrace();
            }
        finally {
            close(connection);
        }
    }

    public static String doReceive(String  key){
        String rs="";
        Connection connection =null;
        Session session;
        Destination destination;
        MessageConsumer consumer;
        try {
            connection =factory.createConnection();
            connection.start();
            session = connection.createSession(Boolean.FALSE,
                    Session.AUTO_ACKNOWLEDGE);
            destination = session.createQueue("sales");
            consumer = session.createConsumer(destination);
            TextMessage message = (TextMessage) consumer.receive(10);
            if (null != message) {
                rs = message.getText();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            close(connection);
        }
        return rs;
    }

       /**
  * 关闭连接
  */
 public static void close(Connection connection) {
     try {
         if (connection != null) {
             connection.close();
         }
     } catch (JMSException e) {  

         e.printStackTrace();
     }
 }  

    public static void main(String[]  agrs){

        for(int i= 0;i<20;i++){
            long begin = System.currentTimeMillis();
            ActiveMqUtils.doSend("1111", "sss");
            long end = System.currentTimeMillis();
            System.out.println("耗时:"+(end-begin));
        }

    }
}
时间: 2024-10-11 06:58:35

ActiveMq池的相关文章

ActiveMQ 连接池

PooledConnectionFactory有两个属性maxConnections,maximumActive.咋一看来,用人类的常识理解,maxConnection应该表示最大可建的connection数,maximumActive应该表示最大活跃的connection数,当pool中的连接数大于最大活跃数时,又超过idleTimeout会被回收线程回收到. 如果是这样理解的,就大错特错了.PooledConnetionFactory的这两个参数根本不是这个意思. 看一下PooledConn

Spring下ActiveMQ实战

MessageQueue是分布式的系统里经常要用到的组件,一般来说,当需要把消息跨网段.跨集群的分发出去,就可以用这个.一些典型的示例就是: 1.集群A中的消息需要发送给多个机器共享: 2.集群A中消息需要主动推送,但彼此的网络不是互通的(如集群A只有过HA才能被外界访问): 当然上面的几个点,除了用MQ还有其它实现方式,但是MQ无疑是非常适合用来做这些事的.众多MQ中,ActiveMQ是比较有名气也很稳定的,它发送消息的成本非常廉价,支持Queue与Topic两种消息机制.本文主要就是讲如何在

[项目构建 八]babasport ActiveMQ的介绍及使用实例.

今天就来说下 这个项目中使用ActiveMQ的情况, MQ: message queue, 顾名思义就是消息队列的意思. 一: 使用场景:  消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有这深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度.在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧.在使用队列后,用户的请求发给队列后立即返回(当然不能直接给用户提示订单提交成功,京东上提示:您“您提交

ActiveMQ讯息传送机制以及ACK机制

http://blog.csdn.net/lulongzhou_llz/article/details/42270113 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的. 一. ActiveMQ消息传送机制 Producer客户端使用来发送消息的, Consumer客户端用来消费消息:它们的协同中心就是ActiveMQ br

activemq 使用经验

activemq 使用经验   ActiveMQ 是apache的一个开源JMS服务器,不仅具备标准JMS的功能,还有很多额外的功能.公司里引入ActiveMQ后,ActiveMQ成里我们公司业 务系统中最重要的一个环节.所有应用都通过jms集成,如果ActiveMQ出了故障,整个系统就瘫痪了.因此,头对ActiveMQ的性能,可靠性,以 及如何正确使用,是非常的关心的,而我就被指派来做关于ActiveMQ的调研,本文对此做了些总结. 1 使用jms需要注意的问题 一下所述的问题,不仅是对Act

分布式 dubbo zookeeper springmvc mybatis shiro restful redis fastdfs activemq

摘要: 摘要: SSH ++shiro+restful+bootstrap java架构 java企业架构 spring mvc +mybatis + KafKa+Flume+Zookeeper j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 分布式架构 分布式消息中间件:spring mvc +mybatis + KafKa+Flume+Zookeeper 分布式缓存:Redis spring mvc +mybatis + 分布式

架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)

接上文<架构设计:系统间通信(21)--ActiveMQ的安装与使用> 3.ActiveMQ性能优化思路 上篇文章中的两节内容,主要介绍消息中间件ActiveMQ的安装和基本使用.从上篇文章给出的安装配置和示例代码来看,我们既没有修改ActivieMQ服务节点的任何配置,也没有采用任何的集群方案.这种情况只适合各位读者熟悉ActiveMQ的工作原理和基本操作,但是如果要将ActivieMQ应用在生产环境下,上文中介绍的运行方式远远没有挖掘出它的潜在性能. 根据这个系列文章所陈述的中心思想,系统

第十一章 企业项目开发--消息队列activemq

注意:本章代码基于 第十章 企业项目开发--分布式缓存Redis(2) 代码的github地址:https://github.com/zhaojigang/ssmm0 消息队列是分布式系统中实现RPC的一种手段. 1.消息队列的基本使用流程 假设: 我们有这样一个需求,当每注册一个admin的之后,就写一条日志log数据到数据库. 分析: 在实际中,我们是不会把日志直接写入数据库的,因为日志数据通常是庞大的,而且日志的产生是频繁的,如果我们使用数据库存储日志,哪怕是使用异步存储,也是极耗性能的.

ActiveMQ出体验

1:下载http://activemq.apache.org 解压 2:启动 apache-activemq-5.13.1/bin/activemq start 3:停止 apache-activemq-5.13.1/bin/activemq kill 4: 管理平台http://127.0.0.1:8161/admin/ 用户名admin,密码admin 可在apache-activemq-5.13.1/conf/users.properties 查看 消息序列化 1:修改配置文件 apach