从历史上看, Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的,就像您今天所做的那样。

下一代代理Apache ActiveMQ Artemis(或仅是Artemis)则不是这种情况,后者对大消息有更好的支持。

因此,到了大约时间,骆驼团队终于有一些时间来进行此工作,以确保骆驼与Artemis和大型邮件一起正常工作。 这项工作已在本周末完成,我们提供了一个示例来证明这一点。

该示例使用以下两条小路线运行Camel:

第一种路由只是将文件路由到消息代理上名为data的队列。 第二条路由则相反,即从数据队列到文件的路由。

注意第二条路线,因为它已经打开了Camel的流缓存 。 这确保了Camel将以一种方式处理大型流负载,其中Camel可以将大流自动后台处理到临时磁盘空间以避免占用内存。 Apache Camel中的流缓存是完全可配置的,您可以基于有效负载大小,JVM中剩余的内存等设置阈值,以触发何时后台处理到磁盘。 但是,默认设置通常就足够了。

然后,骆驼使用JMS组件与ActiveMQ Artemis代理集成,您可以如下设置:

这是所有标准配置(您还应该考虑设置连接池)。

该示例需要在JVM中单独运行ActiveMQ Artemis消息代理,然后使用较低的内存设置(例如128mb或256mb等)启动Camel JVM,这可以通过Maven完成:

export MAVEN_OPTS="-Xmx256m"

然后您通过Maven运行Camel

mvn camel:run

当应用程序运行时,您可以将大文件复制到target / inbox目录,然后将这些大消息流式传输到Artemis代理,然后再次返回到Camel,然后将其保存到target / outbox目录。

例如,我通过复制一个1.6gb的docker VM文件而使这很累,而Camel将记录以下内容:

INFO  Sending file disk.vmdk to ArtemisINFO  Finish sending file to ArtemisINFO  Received data from ArtemisINFO  Finish saving data from Artemis as file

我们可以看到文件再次被保存,其正确大小也为1.6gb

$ ls -lh target/outbox/total 3417600-rw-r--r--  1 davsclaus  staff   1.6G Oct 22 14:39 disk.vmdk

我将jconsole连接到正在运行的Camel JVM并监视了内存使用情况,如下图所示:

该图显示堆内存在130mb左右达到峰值,而在GC之后,堆内存回落到50mb左右。 JVM的最大配置为256mb。

您可以找到有关示例的详细逐步说明,以及如何精确运行示例,因此可以自己尝试。 的
该示例是即将发布的Apache Camel 2.21发行版的一部分,其中对camel-jms组件进行了改进,以支持javax.jms.StreamMessage类型,并对ActiveMQ Artemis进行了特殊优化,如本示例所示。

PS:该示例可以用多种方式编写,但是我们没有创建另一个基于Spring Boot的示例,而是选择使用纯XML。 最终,骆驼不在乎,您可以随心所欲地实现和使用骆驼。

翻译自: https://www.javacodegeeks.com/2017/10/working-large-messages-using-apache-camel-activemq-artemis-improved-upcoming-camel-2-21-release.html

在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...相关推荐

  1. apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...

    apache.camel 从历史上看, Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的,就像您今天所做的那样. 下一代代理Apache ActiveMQ A ...

  2. Apache Camel 2.20发布–新增功能

    Apache Camel 2.20已于今天发布,并且像往常一样,我受命撰写有关此新发行版及其亮点的博客. 该版本具有以下重点. 1)Java 9技术预览支持 我们已经开始支持Java 9的工作,此版本 ...

  3. 即将发布的 Apache Spark 3.2 将内置 Pandas API

    在即将发布的 Apache Spark™ 3.2 版本中 pandas API 将会成为其中的一部分.Pandas 是一个强大.灵活的库,并已迅速发展成为标准的数据科学库之一.现在,pandas 的用 ...

  4. 脉冲星 5 月脉动 | Pulsar 2.3.2 即将发布、2.4.0 预览、Pulsar 与 Camel 集成

    作者:zymap + Anonymitaet 审校:Sijie + Jennifer 编辑:Susan + Anonymitaet 阅读本文需要约 10 分钟. 本月亮点速览 产品动态 Pulsar ...

  5. 【优麒麟】22.04 LTS版本即将发布,终极预告来袭,你准备好了吗?

    优麒麟社区自 2012 年创立到现在,已走过 10 个年头,在这 10 年里,优麒麟社区一直在不断打磨自己的技术,希望给大家带来更好的使用体验.在这期间我们的技术成果也得到了国内外社区的认可. 终于在 ...

  6. Kubernetes v1.23即将发布,有哪些重磅更新?

    Kubernetes 1.23即将发布,此版本带来了 45 项增强功能,与 Kubernetes 1.22 中的 56 项和 Kubernetes 1.21 中的 50 项相近.在这 45 项增强功能 ...

  7. apache camel_令人印象深刻的第一个Apache Camel版本

    apache camel 在准备下周的CamelOne会议时,我花了一些时间回顾一下Apache Camel项目的历史. 因此,除其他外,我了解了Apache Camel的第一个正式1.0版本 . A ...

  8. 令人印象深刻的第一个Apache Camel版本

    为了准备下周的CamelOne会议,我花了一些时间回顾一下Apache Camel项目的历史. 因此,除其他外,我了解了Apache Camel的第一个正式1.0版本 . Apache Camel 1 ...

  9. FL STUDIO水果21版本新主题、插件、功能介绍

    大家常说的"DJ音乐"实际应该指的是EDM音乐,现在市面上的宿主软件几乎都可以制作EDM音乐.DJ音乐制作要学多久?可长可短,想要学精一门艺术和技术至少需要一两年时间.FL Stu ...

最新文章

  1. 微指令地址的形成方式_交换那些事儿 | 基础维护篇 IPv6地址分类及配置方法
  2. Winform DataGridView列的单元格中动态添加图片和文字
  3. 人工智能取代医生AI画出鼻咽癌放疗靶区,准确性与医生相当
  4. 神策数据司沛:加速车企数字化转型,搭建高质量用户数据平台实战
  5. 详解 WSUS 部署
  6. 网络上的两台计算机如何互相访问,怎么样使两台电脑互相访问?
  7. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  8. MATLAB强化学习实战(十) 多智能体的路径跟随控制
  9. Word排版之页眉页脚设置
  10. css动画怎么暂停,纯CSS代码实现动画的暂停与播放
  11. CSS / 清除浮动+切图+属性书写顺序+页面布局思路
  12. Hinton最新演讲:前向-前向神经网络训练算法
  13. 基于NMF的推荐系统实例
  14. 程序员常用英语词汇(018)
  15. pdf的下载和在线预览
  16. 从零维到十维空间如何在纸上用手绘出来
  17. vue大屏(驾驶舱)实现数字滚动
  18. 2022版 的IDEA创建一个maven项目(超详细)
  19. interrupt和park的区别
  20. 最新的WidowsXP快捷键操作

热门文章

  1. 26、jdbc操作数据库(3)
  2. MongoDB嵌套数组,多维数组查询
  3. Java web文件下载断点续传
  4. IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
  5. java过滤html标签获取纯文本信息
  6. Spring Boot 发布 jar 包转为 war 包秘籍。
  7. 【Servlet】获取并输出服务器获得的数据
  8. 指定查找区间,查找学生姓名并显示是否修改成功
  9. 使用ADO.NET查询和操作数据
  10. 三星系统和鸿蒙系统,又一设备直升鸿蒙系统,现有操作系统被抛弃,和三星的想法一样!...