关于apache camel的消息转发效率
公司使用activemq和camel做消息的分发,之前数据量不是很大,所以一直没怎么考虑效率问题,对camel的工作原理研究也不深。单是最近随着业务量的增加,camel的效率逐渐成了瓶颈,所以根据日志大概了解了camel的工作原理。虽然camel是被嵌入到activemq中,但在工作过程中,camel和activemq其实还是相对独立的。我们在camel中会配置一个到activemq的连接.
http://camel.apache.org/activemq.html
关于vm这种传输方式,参考http://activemq.apache.org/vm-transport-reference.html
看了下日志,发现这种配置下camel会有一个很严重的问题: camel每次执行转发操作时,都会新建一个到activemq的连接,之后再将其关闭。这严重拖慢了转发效率,因为事实上每次转发都可以使用同一个连接。
因此查了一下camel文档,找到了 http://camel.apache.org/activemq.html 。 里边有关于线程池的配置:
<pre name="code" class="html"><bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://localhost:61616" />
</bean><bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop"><property name="maxConnections" value="8" /><property name="connectionFactory" ref="jmsConnectionFactory" />
</bean><bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"><property name="connectionFactory" ref="pooledConnectionFactory"/><property name="concurrentConsumers" value="10"/>
</bean><bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"><property name="configuration" ref="jmsConfig"/><!-- if we are using transacted then enable CACHE_CONSUMER (if not using XA) to run fastersee more details at: http://camel.apache.org/jms<property name="transacted" value="true"/><property name="cacheLevelName" value="CACHE_CONSUMER" />-->
</bean>
这个正好符合我们的需要。而且顺便把连接换成了多线程,可以进一步提升效率。
需要注意的是,如果使用的是activemq5.6, 这样做会导致内存泄露,我会在下一篇博客中详述。
转载于:https://www.cnblogs.com/buptl/p/6520665.html
关于apache camel的消息转发效率相关推荐
- apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
apache.camel 从历史上看, Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的,就像您今天所做的那样. 下一代代理Apache ActiveMQ A ...
- 在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...
从历史上看, Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的,就像您今天所做的那样. 下一代代理Apache ActiveMQ Artemis(或仅是Art ...
- Apache Camel –从头开始开发应用程序(第2部分/第2部分)
这是本教程的第二部分,我们将使用Apache Camel创建发票处理应用程序. 如果您错过了它,一定要看一下第一部分 . 以前,我们已经定义了系统的功能要求,创建了网关,分离器,过滤器和基于内容的路由 ...
- Apache Camel入门
在先前的博文中,我们了解了企业集成模式(EIP). 现在,在这篇文章中,我们将研究实现这些模式的Apache Camel框架. 关于骆驼: Apache Camel是一个开放源代码项目,已有将近5年的 ...
- Apache Camel教程– EIP,路由,组件,测试和其他概念的简介
公司之间的数据交换增加了很多. 必须集成的应用程序数量也增加了. 这些接口使用不同的技术,协议和数据格式. 但是,这些应用程序的集成应以标准化的方式建模,有效实现并由自动测试支持. 企业集成模式(EI ...
- Apache Camel简介以及使用场景
Apache Camel简介以及使用场景 我们要解决的问题以及解决方案 我们要解决的问题 EAI的常用解决方案 SOA架构模型 ESB企业服务总线 如何实现ESB 为什么使用Camel Camel可以 ...
- Apache Camel核心概念
1. Camel中的相关概念 1.1 ROUTING ENGINE(路由引擎) Camel的路由引擎是消息移动的实际执行者,但并未暴露给开发者:不过作为开发者,我们应该意识到它的存在:并且它做了所有繁 ...
- Apache Camel 2.15.0 发布,Java 规则引擎
Apache Camel 2.15.0 发布啦!!!该版本经过 6 个月开发,修复了超过 500 个 bug.但最值得关注的是给我们带来的新特性: 自文档 目录组件 Camel 工具类目录 重用 Ca ...
- apache camel 的 split 和 aggregate
2019独角兽企业重金招聘Python工程师标准>>> split和aggregate,看图就明白了. 下面我用一个例子来说明,非常难得,你很难在网上找到apache camel这样 ...
最新文章
- Linux驱动入门篇(一):Hello, world
- 解救小易——网易笔试
- ELI5 和scikit-learn文本分类管道
- 【深度学习】——日常知识点总结(持续更新)
- 阿里云数据库Mysql被黑
- php基础教程(二):基础语法
- OpenGl 游戏编程笔记 第七章:纹理映射 (texture mapping) (一)
- VUE配置本地代理服务器
- Properties和ResourceBundle类
- KEIL arm C51中常量变量函数的绝对地址设定
- 笔记本运行php的快捷键是啥,雷神笔记本u盘启动快捷键是什么|雷神笔记本按哪个键进u盘启动...
- LWN:两组跟memory-tier有关的patch!
- Python计算机视觉 sift和Harris特征匹配处理对比
- [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解
- 元数据管理器中存在错误
- Rust之错误处理(三):panic!还是不要panic!
- 开发者必须关注的工具合集,受益终生!
- android usb采集卡,USB HDMI直播采集卡1805怎么用?
- 22款奔驰GLC260L改装23P驾驶辅助系统,这几大功能你还是有必要知道的!
- 史上最全因果推断合集-10(滴滴的国际化外卖团队智能补贴实战)