问题标签 [spring-rabbit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-integration - 当与代理的连接断开时,如何防止 AMQP(RabbitMQ)消息被黑洞?
例如,如果网络中断并且您的生产者失去与您的 RabbitMQ 的连接中断,您如何防止需要排队的消息成为黑洞?我有一些想法,其中一个是将所有消息写入本地数据库并在它们被确认后将其删除,并在一段时间后定期重新发送,但这仅在您的连接工厂设置为让发布者确认时才有效。
java - Spring注解@Retryable——如何设置拦截器
我在类@Retryable
中的方法上使用注释@Service
它的工作原理就像一个魅力:我直接从 RabbitMQ 收到一条消息,直到没有错误或尝试次数达到 5 才得到确认,当时消息直接发送到 DLQ,就像我一样通缉。
我唯一的问题是我需要从属性文件中动态设置 maxAttempts。解决方案应该是设置一个拦截器,但只有一个会导致错误,例如当我有:
其中 myInterceptor 定义为:
我得到一个无限循环,但有以下异常:
我很确定我把它保持得太简单了,但我不知道什么可能导致这个错误以及如何解决它,有人知道发生了什么吗?
java - Spring RabbitMQ SimpleRabbitListenerContainerFactory usage
From the docs, I want to use consume from queues by dynamically changing the consumers without restarting the application.
I do see that Spring RabbitMQ latest version supports the same, but no clue/example/explanation to change the same. I couldn't see proper source code for the same or how to pass params like maxConcurrentConsumers
I am using XML based configuration of Spring RabbitMQ along with Spring integration
Can anyone guide me how to dynamically configure the consumers?
rabbitmq - 在 RabbitMQ 中手动确认消息
以前我正在阅读队列中存在的所有消息,但现在我必须根据用户的选择(计数)返回特定数量的消息。
我尝试相应地更改 for 循环,但由于自动确认,它会读取所有消息。所以我尝试在配置文件中将其更改为手动。
在我的程序中,如何在阅读 msg 后手动确认消息(目前我正在使用 AmqpTemplate 接收并且我没有频道参考)?
任何帮助都是非常可观的,在此先感谢。
rabbitmq - 在 RabbitMQ 中使用哪种类型的交换(直接、扇出、主题、标头)的场景?
我无法弄清楚使用 RabbitMQ 中提供的不同交换类型的实际场景。
spring - 固定回复队列在第二条消息后超时
我正在尝试实现一个 RabbitMQ 配置,它允许我使用固定的回复队列,而不是出现数百个临时队列。我发布的第一条消息通过回复队列得到立即响应,第二条、第三条甚至有时甚至是第五条消息,只是给了我一个堆栈跟踪信息Reply received after timeout
。如果我稍等片刻,然后发送另一条消息,我会再次收到响应,任何立即连续的消息都会再次失败并出现相同的错误。
在发布者方面,我有以下配置:
在消费者方面,我有以下配置:
我正在使用 spring-amqp 1.4.4 以防万一:
这就是我构建消息并发布它的方式:
模板只是 AmqpTemplate 的一个自动装配实例:
第一条消息得到立即响应,第二条消息(以及第三条消息等等)在消费者端获得以下堆栈跟踪:
...而发布者在回复队列上没有得到任何响应后只是超时。
这就是我在消费者端回复消息的方式:
System.out.println(message);
打印以下内容:
有任何想法吗?
spring - 使用 RabbitMQ 自定义目的地
我正在尝试在我的项目中使用 RabbitMQ 作为代理,并且我想在客户端打开套接字时分配目标队列。像这样的东西:http: //i.imgur.com/ldB2M0m.png
我设法做到了SimpleBroker
,但是当我尝试做到这一点时,StompBrokerRelay
我无法在 RabbitMQ 上分配队列,并且我停止在客户端(http://i.imgur.com/gNaRHCQ.png)上接收消息。
这就是我的做法:
控制器:
网络套接字配置:
客户:
我知道我错过了一些东西。也许一些经纪人配置?
先感谢您!
web-services - 如何决定使用消息传递(例如 RabbitMQ)还是使用 Web 服务进行后端组件交互/通信?
在开发后端组件时,我需要决定这些组件如何相互交互和通信。特别是,我需要决定使用(RESTful,微)Web 服务与消息代理(例如 RabbitMQ)是否更好。是否有某些标准可以帮助决定为每个组件使用 Web 服务还是使用消息传递?
java - 如何使用 RabbitMQ 平衡发布者的请求?
假设您有多个生产者和一个消费者想要接收来自所有可用发布者的持久消息。
生产者以不同的速度工作。假设系统 A 产生 10 个请求/秒,系统 B 产生 1 个请求/秒。因此,如果您使用唯一的队列,您将处理来自 A 的 10 条消息,然后处理来自 B 的 1 条消息。
但是,如果您想平衡负载并处理来自 A 的一条消息,然后处理来自 B 的一条消息等呢?从多个队列消费不是一个好的选择,因为在这种情况下我们不能使用通配符绑定。
更新:
每个生产者排队似乎是最好的方法。生产者不知道他们不断变化的速度。每个消费者拥有一个队列,我可以订阅一个主题并接收来自所有可用发布者的消息。但是每个生产者都有一个队列,我需要自己编写逻辑:
- 通过管理插件获取所有可用队列(AMQP 不允许列出队列)。
- 按队列名称过滤。
- 实施循环策略。
- 实施通知机制以订阅随时可能出现的新发布者。
- 当发布者消失并且客户端读取所有消息时删除不必要的队列。
好吧,这看起来很简单,但我认为代理可以提供所有这些功能而无需任何编码。如果有一个队列,我只创建一个持久队列,将其绑定到主题交换,然后启动任意数量的发布者向主题发送消息。这个选项几乎是开箱即用的。
java - 使用spring-rabbit从消息中提取标题而不在注释中声明队列
现在我可以这样做:
我可以在注释本身不声明队列的情况下做到这一点吗?