Java 使用spring cloud stream 3.0+;

Java 使用spring cloud stream 3.0+;,java,spring,rabbitmq,spring-cloud,spring-rabbit,Java,Spring,Rabbitmq,Spring Cloud,Spring Rabbit,我有一个生产者使用直接交换在RabbitMQ队列中生成消息 队列名称:临时队列, 交易所名称:临时直接交易所 生成此队列很容易,因为在我熟悉的producer应用程序中我使用了它 在我的消费者应用程序上,我需要使用版本3.0+ 我希望避免使用旧式注释,如@EnableBinding,@StreamListener,因为它们即将被解除权限 我的应用程序的旧代码如下所示: @EnableBinding(Bindings.class) public class TempConsumer {

我有一个生产者使用直接交换在RabbitMQ队列中生成消息

队列名称:临时队列, 交易所名称:临时直接交易所

生成此队列很容易,因为在我熟悉的producer应用程序中我使用了它

在我的消费者应用程序上,我需要使用版本3.0+

我希望避免使用旧式注释,如
@EnableBinding
@StreamListener
,因为它们即将被解除权限

我的应用程序的旧代码如下所示:

@EnableBinding(Bindings.class)
public class TempConsumer {

    @StreamListener(target = "TEMP_QUEUE")
    public void consumeFromTempQueue(MyObject object) {
        // do stuff with the object
    }
}

public interface Bindings {
    @Input("TEMP_QUEUE")
    SubscribableChannel myInputBinding();
}
从他们的文档中,我发现我可以做类似的事情

@Bean
public Consumer<MyObject> consumeFromTempQueue() {
    return obj -> {
        // do stuff with the object
    };
}
@Bean
公共使用者ConsumerFromTempQueue(){
返回obj->{
//用这个物体做东西
};
}

我不清楚如何指定此bean将从临时队列中消费?另外,如果我想从多个队列消费,该怎么办?

您需要使用
应用程序.yml
来绑定bean

spring.cloud.stream:
  function.definition: consumeFromTempQueue
您也可以使用此配置来配置源、进程和接收器。在您的情况下,您只是在使用一个源

有关更多信息,请阅读本手册。

请参阅

您可以从多个队列中使用

spring.cloud.stream.bindings.consumeFromTempQueue-in-0.destination=q1,q2,q3
spring.cloud.stream.bindings.consumer.multiplex=true
没有多路复用,您将得到3个绑定;使用多路复用,您将得到一个侦听器容器侦听多个队列