activeMQ性能优化--对象池管理connection
来源:互联网 发布:seo待遇 编辑:程序博客网 时间:2024/06/06 08:39
activeMQ的某个应用场景,消费者和服务器只需建立一个长连接,而生产者的情况集中在服务器,需要对服务器端的生产者连接进行优化。
首先maven引入jar包依赖
<dependency> <groupId>org.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.9.0</version> <exclusions> <exclusion> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> </exclusion> </exclusions> </dependency>
下面是实现代码
import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.pool.PooledConnection;import org.apache.activemq.pool.PooledConnectionFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.jms.*;public class MQProductHelper { public static final Logger LOG = LoggerFactory.getLogger(MQProductHelper.class); private static PooledConnectionFactory poolFactory; /** * 获取单例的PooledConnectionFactory * @return */ private static synchronized PooledConnectionFactory getPooledConnectionFactory() { LOG.info("getPooledConnectionFactory"); if (poolFactory != null) return poolFactory; LOG.info("getPooledConnectionFactory create new"); IConfigService configService = ServiceManager.getService(IConfigService.class); String userName = configService.getConfig("MQ_USER_NAME", ShopConstant.BC_SHOP_ID); String password = configService.getConfig("MQ_USER_PASS", ShopConstant.BC_SHOP_ID); String url = configService.getConfig("MQ_BROKER_URL", ShopConstant.BC_SHOP_ID); ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(userName, password, url); poolFactory = new PooledConnectionFactory(factory); // 池中借出的对象的最大数目 poolFactory.setMaxConnections(100); poolFactory.setMaximumActiveSessionPerConnection(50); //后台对象清理时,休眠时间超过了3000毫秒的对象为过期 poolFactory.setTimeBetweenExpirationCheckMillis(3000); LOG.info("getPooledConnectionFactory create success"); return poolFactory; } /** * 1.对象池管理connection和session,包括创建和关闭等 * 2.PooledConnectionFactory缺省设置MaxIdle为1, * 官方解释Set max idle (not max active) since our connections always idle in the pool. * * @return * @throws JMSException */ public static Session createSession() throws JMSException { PooledConnectionFactory poolFactory = getPooledConnectionFactory(); PooledConnection pooledConnection = (PooledConnection) poolFactory.createConnection(); //false 参数表示 为非事务型消息,后面的参数表示消息的确认类型(见4.消息发出去后的确认模式) return pooledConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); } public static void produce(String subject, String msg) { LOG.info("producer send msg: {} ", msg); if (StringUtil.isEmpty(msg)) { LOG.warn("发送消息不能为空。"); return; } try { Session session = createSession(); LOG.info("create session"); TextMessage textMessage = session.createTextMessage(msg); Destination destination = session.createQueue(subject); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); producer.send(textMessage); LOG.info("create session success"); } catch (JMSException e) { LOG.error(e.getMessage(), e); } } public static void main(String[] args) { MQProductHelper.produce("test.subject", "hello"); }}
0 0
- activeMQ性能优化--对象池管理connection
- activeMQ性能优化--对象池管理connection
- 优化ActiveMQ性能
- ActiveMq性能优化
- 优化ActiveMQ性能
- 优化ActiveMQ性能
- activemq性能优化
- ActiveMq性能优化
- ActiveMQ性能优化
- ActiveMq的性能优化
- 优化ActiveMQ性能
- 优化ActiveMQ性能(zhuan)
- 认识和优化connection对象
- 认识和优化connection对象
- ActiveMQ使用笔记(七)ActiveMQ性能优化
- ActiveMQ使用笔记(七)ActiveMQ性能优化
- Android 性能优化对象池技术 <5>
- cocos2dx游戏性能优化之对象池
- grep 命令变色
- poj 1681 Painter's Problem (高斯消元)
- 几种插值算法的代码实现
- 湖南省第六届大学生程序竞赛--战场的数目
- Property Animation Part II(属性动画 第二部分)
- activeMQ性能优化--对象池管理connection
- objc语言的运行时处理
- ios音视频相关牛人
- Android 自定义View (TextView)
- 扫描二维码自动识别手机APP下载地址
- 安装 xmlbuddy 插件到 Eclipse 3.0 以支持编辑 xml 文件
- MySQL 学习笔记--架构
- Solr 与 项目 集成、单元测试
- java读写文件大全