gpt4 book ai didi

spring-boot - @RabbitListener - 从属性定义队列

转载 作者:行者123 更新时间:2023-12-04 03:17:14 27 4
gpt4 key购买 nike

可以使用逗号分隔的属性来定义要监听的队列吗?目的是能够在不更改代码的情况下更改队列名称和队列数量。

我在 application.properties 中定义了队列像这样:

my.aggregate.queues=/some/queue,/some/other/queue

我可以使用 SpEL 将队列名称包含为列表如此:
@Value("#{'${my.aggregate.queues}'.split(',')}")

但是,当我尝试使用 @RabbitListener 监听队列时注释我发现我必须单独定义队列。使用
@RabbitListener(queues = { "#{'${my.aggregate.queues}'.split(',')}" })

导致队列名称被解析为字符串数组,但不能被使用:
@RabbitListener can't resolve '[Ljava.lang.String;@5396eeb1' as either a String or a Queue

我尝试了各种其他 SpEL 组合,但都没有成功。有没有办法使用 SpEL 动态定义队列?

最佳答案

是的; SpEL 将在 queues 的第一个元素中放置一个队列名称数组。大批。

如果您打开一个 JIRA issue ,我们有可能在下周发布的 1.5 版本中得到修复。

我认为我们需要接受一个评估为逗号分隔字符串的表达式,然后在处理注释时进行拆分。

编辑:

但是,我刚刚意识到 RabbitMQ 允许您创建包含逗号的队列,所以也许我们应该只处理第一个数组元素本身就是一个数组。

关于spring-boot - @RabbitListener - 从属性定义队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com