适用于ActiveMQ 5.9的Apache Camel Broker组件

将Apache Camel嵌入ActiveMQ代理可以为使用Camel的集成功能扩展消息代理提供极大的灵活性。 Apache Camel路由的另一个好处是,如果使用activemq组件 ,则可以避免远程连接到ActiveMQ的序列化和网络开销。 关于Apache ActiveMQ真正伟大的事情之一是,它与Apache Camel一起运行得很好 。

但是,如果您想更改流经ActiveMQ消息代理本身的消息的行为,则将仅限于附带的ActiveMQ Broker 拦截器集 –或开发自己的Broker插件 –然后将其作为罐子引入类路径中为ActiveMQ经纪人。

但是,真正有用的是将Interceptors和Camel结合在一起,从而使使用Camel路由配置Broker Interceptor更加容易,而这正是我们即将与代理 Camel Component一起发布的ActiveMQ 5.9所做的。 您可以将camel.xml文件包含到ActiveMQ代理配置中 ,然后,如果您希望将所有发送到队列的消息都发送到Queue并将其发布到Topic,并在此过程中更改其优先级,则可以执行以下操作:

<route id="setPriority"><from uri="broker:topic:test.broker.>"/><setHeader headerName="JMSPriority"><constant>9</constant></setHeader><to uri="broker:queue:test.broker.component.queue"/>
</route>

需要注意的几件事:

  • 代理程序组件仅在拦截器启动时才将拦截器添加到代理程序中-因此,代理程序组件在使用前将不会向运行中的代理程序添加任何开销-这样开销将变得很小。
  • 当代理已接收到消息时,但在消息被处理(持久化或路由到目的地)之前,您可以使用代理组件来拦截消息。
  • CamelExchange上的in消息既是Camel消息,也是JMS消息(通过ActiveMQ从Stomp / MQTT / AMQP等途径路由的消息始终转换为JMS消息)。
  • 您可以在目标上使用通配符来拦截来自与通配符匹配的目标的邮件。
  • 截取之后,您必须将消息显式发送回代理组件–这允许您丢弃选择消息(不发送)–或像上述情况一样–将消息重新路由到其他目标。
  • 但是,有一个刻意的警告,您只能将消息发送到已被拦截的代理组件,即,从另一个组件(例如,文件)路由骆驼消息将导致错误。

在activemq-broker软件包中添加了一些额外的类-在不使用JMX的情况下启用正在运行的代理的视图-并支持使用broker组件:

org.apache.activemq.broker.view.MessageBrokerView –提供检索代理统计信息的方法,并从MessageBrokerView –您可以检索特定目标的org.apache.activemq.broker.view.BrokerDestinationView 。 这意味着您可以通过执行以下操作来在代理内部添加灵活的路由-在目标队列深度达到特定限制时路由消息:

<camelContext id="camel" trace="false" xmlns="http://camel.apache.org/schema/spring"><route id="routeAboveQueueLimitTest"><from uri="broker:queue:test.broker.queue"/><choice><when><spel>#{@destinationView.queueSize >= 100}</spel><to uri="broker:queue:test.broker.processLater"/></when><otherwise><to uri="broker:queue:test.broker.queue"/></otherwise></choice></route></camelContext><bean id="brokerView" class="org.apache.activemq.broker.view.MessageBrokerView"><constructor-arg value="testBroker"/></bean><bean id="destinationView" factory-bean="brokerView" factory-method="getDestinationView"><constructor-arg value="test.broker.component.route"/></bean>

这使用的是Camel Message Router模式-请注意在when子句中使用Spring表达式语言( spel )。

参考:来自JCG合作伙伴 Rob Davies的ActiveMQ 5.9的Apache Camel Broker组件,来自Open Source Integration博客上的Rob Davies 。

翻译自: https://www.javacodegeeks.com/2013/09/apache-camel-broker-component-for-activemq-5-9.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java rpg对战_RpgGame.java

import java.util.Scanner;public class RpgGame {public static void main(String[] args) {System.out.println("--------------------亲爱的勇士欢迎来到文字世界--------------------");System.out.println("--------------------这是一个充斥着危险的世界&…

hive基本操作与应用

通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计&#xff0c;结果放在表word_count里 查看统计结果 转载于:https://www.cnblogs.com/cairuiqi/p/9048256.html

python - classs内置方法 solt

solt # __solt__ # 是一个类变量,变量值可以是列表、元组或者是可迭代对象,也可以是一个字符串 # (以为这所有实例只有一种数据属性) # # 作用:(为了节省内存空间,减少过多的实例属性所占用的内存空间) # 优点: # 1.使用_solt__以后,实例的__dict__属性被去除,从而达到节省…

如何优雅的链式取值之 MayBe 函子

本文基于 如何优雅地链式取值 可能有人之前看过我写的关于函数式编程的东西&#xff0c;也有人看过这一篇文章。由于我还是学生&#xff0c;开发经验相对较少&#xff0c;所以对于函数式编程如何应用存在一些疑惑。之前也问过面试官&#xff0c;说是实际开发中用的比较少&#…

Jackson中的自定义反序列化器和验证

tl; dr&#xff1a;将输入验证添加到Jackson中的自定义json解串器很重要。 在RHQ中&#xff0c;我们在几个地方使用了Json解析-直接在as7 / Wildfly插件中&#xff0c;或者通过RESTEasy 2.3.5间接在REST-api中使用&#xff0c;已经很繁重了。 现在&#xff0c;我们有一个bean…

java ssh shell命令_java 通过ssh 执行命令

java 里面的开源 ssh libjsch 例子JSch jSch new JSch();//设置JSch 的日志&#xff0c;可以看到具体日志信息JSch.setLogger(new Logger() {Overridepublic boolean isEnabled(int level) {return true;}Overridepublic void log(int level, String message) {System.out.pri…

标准易语言学习

1、窗口程序加入自定义局部变量 按CTRLL弹出局部变量表&#xff08;或点菜单栏上的插入&#xff0c;选择局部变量&#xff09;转载于:https://www.cnblogs.com/slyzly/articles/9048724.html

c# TCP高性能通信

开篇都是吹牛逼哈。。。 我原本打算使用dotnetty来解决传输问题&#xff0c;但是试了下没有成功&#xff0c;也没有找到相关问题解决方法&#xff0c;导出源码&#xff0c;好大啊。暂时不想研究&#xff0c;而且是.Net Core的。最后没有办法&#xff0c;就自己封装了。我就不上…

vue项目中keep-alive的使用,从详情页返回列表时保存浏览位置

背景描述&#xff1a; 最近在做移动端前端项目中&#xff0c;需要实现以下场景&#xff1a; 1.在页面查询列表&#xff0c;进入详情页时&#xff0c;返回需要页面返回到上次浏览的位置 2.由于查询列表获取的数据可能会短时间改变&#xff0c;如果前端长时间缓存数据&#xf…

Apache log4j是领先的日志记录框架

根据 从零周转开始的调查中&#xff0c; Apache log4j是领先的Java日志记录框架。 这实际上是一个非常有趣的调查。 它显示SLF4J最常用作伐木外墙&#xff0c;占61&#xff05;。 但是&#xff0c;它似乎最常与Apache Log4j一起使用&#xff0c;52&#xff05;的调查参与者都…

Centos6.8通过yum安装mysql5.7

Centos6.8通过yum安装mysql5.7 2017年07月13日 14:19:10 阅读数&#xff1a;1067 1.安装mysql的yum源 a.下载配置mysql的yum源的rpm包 根据上面3张图片中的操作下载下来的rpm文件可以通过如下命令获取&#xff1a; wget https://dev.mysql.com/get/mysql57-community-release-e…

codeforces Labyrinth

codeforces Labyrinth Time Limit: 2 Sec   Memory Limit: 512 MB Description You are playing some computer game. One of its levels puts you in a maze consisting of n lines, each of which contains m cells. Each cell either is free or is occupied by an obstac…

在vscode使用editorconfig的正确姿势

editorconfig是什么鬼&#xff1f; editorconfig是用来帮助开发者定义和维护代码风格&#xff08;行尾结束符、缩进风格等&#xff09;的东东。 editorconfig支持哪些规则&#xff1f; 请自行参考 https://editorconfig.org/ 如何在vscode中使用editorconfig&#xff1f; 在…

使用Java的Apache Camel入门

Apache Camel是一个非常有用的库&#xff0c;可以帮助您处理来自许多不同来源的事件或消息。 您可以通过许多不同的协议&#xff08;例如在VM&#xff0c;HTTP&#xff0c;FTP&#xff0c;JMS甚至DIRECTORY / FILE之间&#xff09;移动这些消息&#xff0c;但仍使处理代码不受传…

Mvc+Hui+SqlSugar+Autofac+NLog+T4 架构设计(一)

一、前言 作为小菜鸟第一次写博客的我还有点小激动&#xff0c;最近开始打算着手写一个属于自己架构。算下来差不多最近花一周多的下班时间了来写这个框架&#xff0c;本来想整体架构开发完成测试完成后才写博客&#xff0c;怕自己没时间或失去动力&#xff0c;就先把自己架构设…

闲话杂谈—至曾经的自己

【这篇闲话杂谈写的背景时间是&#xff1a;2018年9月30号】 今天估计是自己突然灵光一闪&#xff0c;又或许是想到昨天团建时曾经带自己的师傅&#xff08;刘工&#xff09;的一番话。让我觉得大家都在变化&#xff0c;都慢慢的不再是曾经咱们一块儿奋斗、一块儿无话不谈&#…

房价在手,天下我有 --反手就撸一个爬虫(终)

接上篇&#xff0c;科科&#xff0c;好&#xff0c;我们继续 我们在这里先把json数据入库吧&#xff5e; 首先&#xff0c;database/scheme里定义好数据类型。 const mongoose require(mongoose)const detailHouseSchema new mongoose.Schema({ //定义数据模式link:String…

1.1 计算机网络的形成和发展

1.早期计算机网络&#xff1a;20世纪60年代前 计算机和通信技术结合的先驱&#xff1a;SAGE半自动化地面防空系统 &#xff0c;该系统由麻省理工学院林肯实验室设计。 计算机通信在民用领域的代表&#xff1a;飞机订票系统SABRE-I &#xff0c;美国航空公司与IBM公司联合开发。…

Spring MVC:带有CNVR卷的REST应用程序。 1个

不久前&#xff0c;我阅读了Paul Chapman撰写的有关内容协商视图解析器 &#xff08;CNVR&#xff09;的文章。 Spring Framework Blog上的那篇文章启发了我研究这个框架的领域。 因此&#xff0c;我开发了一个基于Spring MVC和CNVR的 REST示例应用程序。 该应用程序演示了REST…

《精通Spring 4.x 企业应用开发实战》学习笔记

第四章 IoC容器 4.1 IoC概述 IoC&#xff08;Inverse of Control 控制反转&#xff09;&#xff0c;控制是指接口实现类的选择控制权&#xff0c;反转是指这种选择控制权从调用类转移到外部第三方类或容器的手中。 也就是由Spring容器借由Bean配置来进行控制。 DI&#xff08;D…