当前位置: 首页 > 知识库问答 >
问题:

带预取的Spring AMQP单用户并行

井逸明
2023-03-14

但是,这种设计似乎不能用于Spring-AMQP世界。在SimpleMessageListenerContainer中,对于每个AMQP使用者,所有消息都被传递到一个BlockingQueueConsumer,并且一个线程将消息从BlockingQueueConsumer的阻塞队列传递到MessageListener。尽管SimpleMessageListenerContainer支持TaskExecutor,但TaskExecutor仅用于每个使用者运行一个任务。因此,要并行处理多个消息,就必须使用多个使用者。

这就引出了一些关于spring-amqp并行性的问题。首先,我最初设计的单用户和高预取计数是实现与AMQP并行的有效方法吗?如果是这样,为什么Spring-AMQP要避开这种设计而采用每个用户的线程设计呢?是否可以定制Spring-AMQP来实现单用户并行?

共有1个答案

彭鸿哲
2023-03-14

Spring AMQP是针对rabbit客户端库的早期版本设计的,该版本每个连接只有一个线程。

DefaultConsumer的handleDelivery方法可以生成一个新的Runnable,该Runnable执行工作并在工作结束时确认消息。

这并不比简单地增加concurrentconsumers多得多--唯一的区别是每个线程都有一个consumer,但没有太多的开销。

 类似资料:
  • 一、 我与CachingConnectionFactory有一个SpringAMQP项目。我需要从AMQP连接获取一些属性,例如:状态、连接时间、通道和一些运行时度量。CachingConnectionFactory是否有任何指标支持(例如:https://www.rabbitmq.com/blog/2016/11/30/metrics-support-in-rabbitmq-java-clien

  • 该简介旨在创建一个ID为1122、余额为20000英镑、年利率为4.5%、取款方式为2500英镑、存款方式为3000英镑、打印余额、月利率和账户创建日期的账户对象。 我写了下面的代码,但主要方法是初始余额错误应该是20000英镑,而不是20500英镑,提款和存款也错误。金额应该是提款=17,500英镑,存款=20,500英镑。关于如何重新爱这个有什么建议吗?

  • 说明 本协议已合并到协议6.1,建议不再使用 此消息用于返回新预订订单列表 请求地址 http://api.dc78.cn/Api/bk_newlist 请求方式 GET 请求参数 返回 { "status": 1, "list": [ { "id": "4610", "time": "2015-08-18 09:51:08", "date": "2015-08-18", "shift": "12

  • 说明 此消息用于返回预订订单列表 请求地址 http://api.dc78.cn/Api/bk_list 请求方式 GET 请求参数 date=20150817,查询日期,使用yyyyMMdd格式,日期月份保持两位 如果不传或为空,则返回所有当天及以后的预订 返回 { "status": 1, "list": [ { "id": "4610", "time": "2015-08-18 09:51:

  • 对接API接口,自行实现MQTT对接模式下,下行接口收到bk-new推送时(下行接口说明见0.5),根据推送的预订音id调用本接口来获取预订单详情。 DLL接口已封装,无需直接调用本接口。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 bk_get_book string get GET参数组,本组参数需

  • 用于批量获取指定日期预订单列表 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 bk_list string get GET参数组,本组参数需要参与签名 是 object └date 日期 是 20190821 number 请求示例 { "action": { "action": "bk_list"

  • 对接API接口,自行实现MQTT对接模式下,下行接口收到bk-new推送时(下行接口说明见0.5),根据推送的预订音id调用本接口来获取预订单详情。 DLL接口已封装,无需直接调用本接口。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 bk_get_book string get GET参数组,本组参数需

  • 问题内容: 我想为我的网站创建一个用户管理系统, 有什么更好的安全性和性能。 类型1: 或者 类型2: 哪一个更好 ? 问题答案: 理想情况下: 根本不存储密码(即使是加密的)。存储从密码派生的 哈希 。 给密码加盐以防止彩虹攻击。 将散列放在单独的数据库服务器上,位于其自己的防火墙和其定义良好的API 1之后。该API应该只做三件事: 对于给定的用户名,检索相应的密码哈希。 对于给定的用户名,设