Apache Camel/ActiveMQ 优先级路由

2024-04-18

我有两个具有相同消费者的 AMQ 队列。 第一个队列 (Q1) 处理 97% 的消息,另一个队列 (Q2) 仅处理 3%。 问题是 Q2 中的消息需要在排队后立即处理。 所以我的问题是,当第二季度有消息可用时,我需要以某种方式暂停第一条路线以吸引其消费者。 apache 骆驼路由如下所示:

<route id="q1">
    <from uri="jms:recordAnalysisRequests" />
    <to uri="bean:analysisService" />
</route>
<route id="q2">
    <from uri="jms:recordAnalysisRequestsFastTrack" />
    <to uri="bean:analysisService" />
</route>

应该使用什么策略? 我认为我不能使用重新排序器,因为 Q1 可能有数千条消息排队,而我无法将所有消息放入重新排序器批次中。 我正在查看路线限制,但我不知道该怎么做。 我还想知道是否可以通过动物园管理员节点进行同步。如果这个解决方案可行的话,我再次需要一些指导。


您可以将所有消息放入一个队列中并使用消息优先级http://activemq.apache.org/how-can-i-support-priority-queues.html http://activemq.apache.org/how-can-i-support-priority-queues.html

第二种选择,使用 Camel Resequencer

<route id="q1">
    <from uri="jms:recordAnalysisRequests" />
    <setHeader headerName="CustomPriority">
       <constant>2</constant>       
    </setHeader>
    <to uri="direct:analysisDirect" />
</route>
<route id="q2">
    <from uri="jms:recordAnalysisRequestsFastTrack" />
    <setHeader headerName="CustomPriority">
       <constant>1</constant>       
    </setHeader>
    <to uri="direct:analysisDirect" />
</route>
<route id="q3">
    <from uri="direct:analysisDirect">
    <resequence>
        <header>CustomPriority</header>
        <to uri="bean:analysisService" />
    </resequence>
</route>

第三个选项(Camel 2.12),不使用重排序器,而是使用带有 PriorityBlockingQueue 的 SEDA 端点https://camel.apache.org/seda.html#SEDA-选择阻塞队列实现 https://camel.apache.org/seda.html#SEDA-ChoosingBlockingQueueimplementation

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Camel/ActiveMQ 优先级路由 的相关文章

  • Apache Camel 路由中的 Spring Boot 属性使用

    是否可以在 Apache Camel 路由中使用 Spring Boot 属性 Value 工作正常 但这是否可以直接放置表达式的占位符 Update 我知道 PropertiesComponent 但这将是除了我不喜欢的 Applicat
  • Camel SFTP - 无法将目录更改为“/”

    我需要通过 SFTP 连接到服务器 但收到此错误 INFO org apache camel component file remote SftpOperations connect Connected to sftp myserver c
  • 从 Apache Camel 内的 JSON 主体访问数据

    我正在使用一个 API 它基本上允许文件系统的导航 我正在尝试通过 API 从返回的 JSON 中访问数据 以便对其执行功能 下面是我使用访问 API 的代码 我尝试使用 unmarshal 来 将返回的 JSON 转换为 Map from
  • 使用Java DSL的Camel CXF POJO模式

    我有一个预先存在的 Web 服务 连接 SOAP 如果可能的话 我想在不使用 Swing 框架的情况下进行调用 我遵循接触优先开发 使用 cxf wsdl2java 工具生成我的 java 文件 我希望从 java 对象中提取用户名和密码并
  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个
  • ActiveMQ NMS:当代理关闭时,connection.start() 会因故障转移协议而挂起

    我有使用 nms activemq 1 5 0 的 C 应用程序 当我的应用程序启动时 它尝试使用故障转移协议连接到代理 我有两个主从配置的代理 如果两个经纪人都关闭了 我的应用程序就会因为以下原因而陷入等待状态 connection st
  • Camel Restlet maxThreads 组件选项

    我有个问题 apache Camel 文档指出 camel restlet 组件 从 2 10 版本开始 可以定义服务请求的最大线程数 http camel apache org restlet html 我该如何指定这个参数 这是我制定的
  • Camel如何以流模式处理json?

    为了在流模式下读取 json 并解组 Camel OOB 中有哪些可用选项 如果不是现成的 如何实施 我发现camel xstream 可能会有所帮助 流模式是默认的还是我们需要做其他事情来使其以流模式读取 还有 Jackson Strea
  • MongoDB 架构设计 - 实时聊天

    我正在启动一个项目 我认为该项目特别适合 MongoDB 因为它提供的速度和可扩展性 我目前感兴趣的模块是与实时聊天有关的 如果我要在传统的 RDBMS 中执行此操作 我会将其分为 频道 一个频道有很多用户 用户 一个用户有一个频道但有多条
  • 如何让 Spring 连接我的 JmsComponent

    我正在编写一个使用 Akka Akka Camel 和 Spring 进行配置的应用程序 应用程序需要充当针对各种应用程序服务器的独立 JMS 客户端 为此 它需要使用 JNDI 设置 JMS 连接工厂 我正在用 jBoss 测试这个 我对
  • Apache Camel 根据请求使用文件内容丰富消息

    我正在实现 RESTful 服务 使用 CXFRS 组件 它应该返回某些请求的文件 每个文件都通过其 id 和扩展名来获取 即restfulservice com path file 1 pdf 每个文件一旦添加就不会改变 文件在获取后不应
  • 如何使用 C 客户端通过 ActiveMQ 启用 SSL

    我已经配置了 ActiveMQ http activemq apache org http activemq apache org 通过以下方式使用 ssl 上下文RedHat 的 SSL TLS 教程 https access redha
  • ActiveMQ 内存消耗通过屋顶(页面文件)...该怎么办?

    我们使用的是旧版本的 ActiveMQ 5 3 2 请参阅 ActiveMQ可靠吗 https stackoverflow com questions 4303610 is activemq reliable 我们取消了持久性 因为我们需要
  • Camel JAX-RS 和跨域请求

    我希望能够在我的本地 Camel 实例上执行 HTTP 请求 仅出于开发目的 我知道这是不好的做法 现在 我坚持 Origin http localhost 8000 is not allowed by Access Control All
  • Apache Camel:如何存储变量以供以后使用

    在使用 Spring DSL 玩 Camel 时 我遇到了以下问题 假设预期的消息流如下所示 客户端将带有 XML 正文的 HTTP POST 消息发送给 CAMEL CAMEL 向服务器代理 HTTP POST 消息 并使用稍微调整的 U
  • 骆驼:我如何异步发送到端点

    如何在不等待端点的路由被处理的情况下向端点发送消息 也就是说 我的路由应该只分派消息并完成 wireTap endpoint 就是答案
  • Camel - 如何在异常时停止路由执行?

    当捕获异常时 有什么方法可以停止路由执行 显示日志消息后
  • Apache Camel POJO Bean 处理器单例还是原型?

    我使用 Camel 的 spring DSL 来构建路由 并使用 POJO bean 作为处理器 最初 我这样做
  • 如果目标上的消费者已关闭,则通知 ActiveMQ 生产者

    我正在使用 ActiveMQ 消息代理 并且我有一个要求 即生产者应用程序想要知道在特定目标上使用的消费者应用程序是否已启动 我怎样才能实现这个目标 Thanks 你应该结帐咨询信息 http activemq apache org adv
  • Java 1.4 上的 ActiveMQ 客户端

    我们在最新版本 5 6 0 中使用 Active MQ 现在我们遇到一个问题 必须连接一个新客户端 不幸的是这个客户端是用IBM JDK 1 4开发的 将 ActiveMQ 添加到应用程序会导致以下错误 UNEXPECTED ERROR O

随机推荐

  • 无法从三星设备上的通话记录中删除短信日志

    我尝试通过我的应用程序从设备中删除所有短信 但由于某种原因 短信日志仍然出现在某些三星设备的通话记录中 我尝试了一种更 激进 的方法 并使用以下 URI 删除ContentResolver content call log calls co
  • SonarQube 分支机构覆盖范围

    是否可以获取 SonarQube 中非主分支的代码覆盖率详细信息 我看到的其他分支的唯一两个选项卡是Issues and Code 我为每个分支运行相同的 Gradle JaCoCo Sonar 命令 gradlew report sona
  • 按元素数量拆分子列表中的列表

    在 python 中 如果我有元素列表 l a b c d e f 和一个数字列表 n 2 1 3 我如何拆分列表l通过中的数字n 并获取这个列表列表 a b c d e f 你可以使用islice gt gt gt from iterto
  • 语法错误:非默认参数遵循默认参数

    from os import system def a len1 hgt len1 til col 0 system mode con cols len1 lines hgt system title til system color co
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在调用子方法时强制调用父方法?

    我想要的是强制当子类从父类继承并且它重写父类方法而不显式调用它时 会引发错误 在错误类的初始化或调用该方法时可能会引发错误 目标是确保 Mother 类的用户执行 mother 方法中存在的一些操作 Example class Mother
  • React 无状态组件 this.refs..value?

    我不知道我这样做是否正确 如果我想从输入中获取值 我使用 this refs whatever value trim 但如果该输入是无状态函数组件 我如何检索 onSubmit 的值 经过研究 我知道现在这是不正确的 但是您应该如何从这些输
  • 未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全性[重复]

    这个问题在这里已经有答案了 我收到错误 未找到源 但无法获取部分或全部事件日志 搜索过 无法访问的日志 安全 当我运行下面的代码来捕获 Win 2K12 R2 服务器 IIS 8 5 上的错误时 EventLog elog new Even
  • 在 iOS 中添加/连接两个文本字段到一个标签中

    我有两个文本字段 在一个视图控制器中显示名称和首字母缩写 我想在另一个视图控制器中将两者显示为一个标签 我怎样才能做到这一点 要将数据从一个页面发送到另一页面 请查看所以在这里回答 https stackoverflow com quest
  • 使用 Sql Server 表中的值的 C# 枚举

    目前我有一个 SQL Server 2005 表 看起来有点像 ID name desc 1 ONE Value One 3 THREE Value Three 5 FIVE Value Five 该表对应于 C 中的枚举 如下所示 enu
  • win32com(python)错误

    我正在尝试在记事本中为我正在处理的程序自动执行操作 但我无法弄清楚我收到的错误消息 import os import win32com object win32com client Dispatch Notepad Application
  • 如何在 Javascript 中创建动态文件+下载链接? [复制]

    这个问题在这里已经有答案了 通常 HTML 页面可以包含可从服务器下载的文档 PDF 等 的链接 假设有一个启用 Javascript 的网页 是否可以从用户浏览器中动态创建一个文本文档 例如 并添加一个链接来下载该文档 而无需往返服务器
  • MAMP MySQL 无法连接:设置无效。

    我在 MAMP 灌输中遇到了问题 我没有改变它刚刚发生的任何事情 我完美地启动了 MAMP 它为 MySQL 服务器启动提供了绿灯 我可以使用 mysql 命令从终端连接到它 但是 当我尝试打开 phpMyAdmin 时 出现此错误 错误
  • 如何消除“最后一个语句应该返回一个值”警告?

    Sun Studio 12 1 打印警告 Warning The last statement should return a value 经常用于这样的功能 int f some code that may return if we en
  • HttpPost 适用于 Java 项目,但不适用于 Android 项目

    我为我的 Android 设备编写了一些代码 用于通过 HTTPS 登录网站并从结果页面中解析一些数据 一个HttpGet首先获取登录所需的一些信息 然后HttpPost执行实际的登录过程 下面的代码在 Eclipse 中的 Java 项目
  • 禁用 LINQ to SQL 中的触发器

    我们创建了一个带有触发器的表 每次有 UPDATE INSERT 时都会更新其中的 ModifiedDate 字段 不过 对于我们应用程序中的特定交易 我们希望暂时禁用此触发器 可以直接从 LINQ 执行此操作吗 直接 不调用存储过程 不使
  • 仅获取 git 远程存储库的标签/引用

    是否可以在不下载对象 文件的情况下获取存储库 例如 GitHub 的标签 引用 我的用例是打包某些软件的最新测试版 这些软件具有悠久的历史 因此很难克隆 理想情况下 在确定我希望使用的标签后 我可以 git clone b tag dept
  • 在 Python 中使用 Rasterbar libtorrent 加载 Magnet LINK

    如何通过 rasterbar libtorrent python 绑定加载 Magnet 链接 import libtorrent as lt import time ses lt session params save path home
  • PHP 中的位掩码设置?

    位和位掩码是我一段时间以来一直难以理解的东西 但我想学习如何在 PHP 中使用它们进行设置和类似的操作 我终于找到了一个声称可以做到这一点的课程 据我所知 它似乎有效 但我不确定这是否是最好的方法 我将在下面发布带有示例代码的类文件 以显示
  • Apache Camel/ActiveMQ 优先级路由

    我有两个具有相同消费者的 AMQ 队列 第一个队列 Q1 处理 97 的消息 另一个队列 Q2 仅处理 3 问题是 Q2 中的消息需要在排队后立即处理 所以我的问题是 当第二季度有消息可用时 我需要以某种方式暂停第一条路线以吸引其消费者 a