如何拦截RabbitMQ中的身份验证错误

问题描述 投票:0回答:1

我们有一项公司政策,当我们连续验证失败超过 3 次时,帐户将被锁定。在 Spring Boot 服务中,我们使用 RabbitMQ 设置,建立连接的登录机制会自动发生。在这种情况下,如果用户名和密码不匹配,则会导致帐户被锁定。因此,我们希望有一个拦截器来检查是否可以通过尝试一次或两次来建立连接。如果连接不起作用,那么我们可以将其集成到健康检查中并相应发出警报。 我检查了现有的重试属性,但它似乎与消息传递和处理有关。有没有什么机制可以阻止自动连接到RabbitMQ?

spring-boot rabbitmq spring-amqp
1个回答
0
投票

有两种类型的服务可以连接到 RabbitMQ:生产者 (

RabbitTemplate
),它是被动的,在您尝试使用其 API 之前不会连接。另一种是消费者,它是一个活动组件,并且在其自己的线程中具有轮询循环。当应用程序准备就绪时,默认情况下会自动启动。但是,您可以让它不这样做,将其
autoStartup
设置为
false

因此,您在项目逻辑中需要的是让所有 Rabbit 监听器默认为未启动,不要向

RabbitTemplate
发送任何消息,直到您的健康服务分别打开开关。

您的检查拦截器可能只能使用

ConnectionFactory.createConnection().createChannel(false).exchangeDeclarePassive("amq.direct")
来确保连接正常等等。

© www.soinside.com 2019 - 2024. All rights reserved.