Java 使用spring cloud stream 3.0+;
我有一个生产者使用直接交换在RabbitMQ队列中生成消息 队列名称:临时队列, 交易所名称:临时直接交易所 生成此队列很容易,因为在我熟悉的producer应用程序中我使用了它 在我的消费者应用程序上,我需要使用版本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 {
@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个绑定;使用多路复用,您将得到一个侦听器容器侦听多个队列