Spring云流RabbitMQ添加队列参数

Spring云流RabbitMQ添加队列参数,rabbitmq,spring-cloud,spring-rabbit,Rabbitmq,Spring Cloud,Spring Rabbit,我想知道如何向使用spring cloud stream声明的rabbitmq队列添加额外参数 我想为RabbitMQ 3.8.x使用单一活动使用者功能。为此,我必须在队列声明中添加一个额外的参数x-single-active-consumer 无法直接使用spring属性对其进行配置。spring cloud stream当前不支持设置任意队列参数 请打开以请求新功能 但是,您可以通过将队列@Bean添加到设置了参数的应用程序中来声明队列 或者,您可以简单地设置exclusiveconsume

我想知道如何向使用spring cloud stream声明的rabbitmq队列添加额外参数

我想为RabbitMQ 3.8.x使用单一活动使用者功能。为此,我必须在队列声明中添加一个额外的参数
x-single-active-consumer


无法直接使用spring属性对其进行配置。

spring cloud stream当前不支持设置任意队列参数

请打开以请求新功能

但是,您可以通过将
队列
@Bean
添加到设置了参数的应用程序中来声明队列

或者,您可以简单地设置
exclusive
consumerbinder属性,该属性提供类似的语义;竞争消费者将定期尝试重新连接

编辑

@springboot应用程序
@EnableBinding(Sink.class)
公共类SO59011707应用程序{
公共静态void main(字符串[]args){
SpringApplication.run(So59011707Application.class,args);
}
@StreamListener(Sink.INPUT)
公共void侦听(字符串输入){
系统输出打印项次(输入);
}
@豆子
队列(){
return QueueBuilder.dustable(“so59011707.myGroup”)
.withArgument(“x-single-active-consumer”,真)
.build();
}
@豆子
公共应用程序运行程序(RabbitTemplate模板){
返回参数->{
convertAndSend模板(“so59011707”、“foo”);
};
}
}

您将在日志中看到一条错误消息

2019-11-24 10:24:22.310错误83004---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法(回复代码=406,回复文本=Premission_失败-vhost'/'中队列'so59011707.myGroup'的不等价参数'x-single-active-consumer':未收到任何,但current是'bool'类型的值'true',类id=50,方法id=10)

你可以忽略它。或者您可以通过将
bindQueue
设置为false并添加
Exchange
Binding
@Bean
s来避免此问题

spring.cloud.stream.rabbit.bindings.input.consumer.bind-queue=false

spring cloud stream当前不支持设置任意队列参数

请打开以请求新功能

但是,您可以通过将
队列
@Bean
添加到设置了参数的应用程序中来声明队列

或者,您可以简单地设置
exclusive
consumerbinder属性,该属性提供类似的语义;竞争消费者将定期尝试重新连接

编辑

@springboot应用程序
@EnableBinding(Sink.class)
公共类SO59011707应用程序{
公共静态void main(字符串[]args){
SpringApplication.run(So59011707Application.class,args);
}
@StreamListener(Sink.INPUT)
公共void侦听(字符串输入){
系统输出打印项次(输入);
}
@豆子
队列(){
return QueueBuilder.dustable(“so59011707.myGroup”)
.withArgument(“x-single-active-consumer”,真)
.build();
}
@豆子
公共应用程序运行程序(RabbitTemplate模板){
返回参数->{
convertAndSend模板(“so59011707”、“foo”);
};
}
}

您将在日志中看到一条错误消息

2019-11-24 10:24:22.310错误83004---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法(回复代码=406,回复文本=Premission_失败-vhost'/'中队列'so59011707.myGroup'的不等价参数'x-single-active-consumer':未收到任何,但current是'bool'类型的值'true',类id=50,方法id=10)

你可以忽略它。或者您可以通过将
bindQueue
设置为false并添加
Exchange
Binding
@Bean
s来避免此问题

spring.cloud.stream.rabbit.bindings.input.consumer.bind-queue=false

是否有任何示例可以将
队列
配置为
@Bean
,并且仍然使用spring cloud stream添加的功能,例如
@StreamListener
@SendTo
?我创建了新的功能请求是否有任何示例可以将
队列
配置为
@Bean
,并且仍然使用这些功能由spring cloud stream添加,如
@StreamListener
@SendTo
?我创建了新的功能请求
@Bean
Binding binding() {
    return BindingBuilder.bind(queue())
            .to(exchange())
            .with("#");
}

@Bean
TopicExchange exchange() {
    return new TopicExchange("so59011707");
}