Spring-boot RabbitMQ 轮换凭证

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

背景信息

我正在使用

spring-boot-starter-amqp
依赖项连接到 RabbitMQ。

在我的 application.yaml 中我有:

spring:
  rabbitmq:
    host: <host>
    port: 5672
    username: <username>
    password: <password>

我有一个配置类,我在其中定义了一个 AmqpTemplate,如下所示:

    @Bean
    public AmqpTemplate amqpSenderTemplate(ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(jsonConverter());
        return rabbitTemplate;
    }

我有这样定义的听众:


@Component
@RequiredArgsConstructor
public class EventListener {
    private final SomeService someService;

    @RabbitListener(queues = "${rabbitmq.event.someQueue}")
    public void process(SomeEvent event) {
        this.someService.process(event);
    }

我们使用配置树将用户名和密码注入到我们的容器中:

spring.config.import: configtree:/etc/apiconfig, ...

配置树包含来自 Hashicorp Vault 的动态机密。

问题/问题

出于安全原因,RabbitMQ 凭证经常会轮换并使用配置树重新注入。 我不明白如何刷新 Amqp 连接,以便它可以处理凭证轮换而无需重新启动容器。 因此,接收 (@rabbitlistener) 和发送 (amqpTemplate) 都需要重置连接。

有人可以指出我正确的方向吗?

我已经研究过@RefreshScope和spring-bus,但我不明白:

  • 我应该刷新/重新创建什么
  • 如何自动检测并触发重新创建,而无需手动调用刷新端点。

非常感谢任何代码示例!

请注意,使用 Hashicorp 的 configtree 的设置无法更改。 另请注意,容器正在 Kuberenetes 上运行。

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

Spring 开发团队Josh Long 已经分享了一个简单的教程,介绍如何使用 Hashicorp Vault 进行 凭证轮换示例,而无需手动点击任何刷新端点。

请按照他的教程这里

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