我可以使用Spring Cloud Stream绑定到多个使用者组吗?

时间:2017-03-30 21:37:13

标签: java spring spring-boot spring-cloud spring-cloud-stream

我正在编写一个处理事件消息的应用程序(发布到主题file-upload-completed)。我有多个端点应该使用这些消息(metadata-readerquota-checker),出于实际原因,我希望将这些端点一起部署在聚合包中。

使用Spring Cloud Stream,我可以使用spring.cloud.stream.bindings.file-upload-completed.group=metadata-reader为第一个端点设置使用者组;我还想处理quota-check组下的消息,但基于属性的配置只允许每个消息队列绑定一个消费者组。

有没有办法配置Spring Cloud Stream,以便我可以绑定到同一个应用程序中多个使用者组下的单个消息队列?

2 个答案:

答案 0 :(得分:3)

  

但基于属性的配置只允许每个消息队列绑定一个使用者组。

按消息队列,是指每个绑定?

此外,当您指定属性spring.cloud.stream.bindings.file-upload-completed.group=metadata-reader时,此处的file-upload-completed表示绑定的目标名称(例如:通道名称),您可以定义多少个通道及其与特定的绑定绑定到特定目标的使用者组(主题:file-upload-completed

spring.cloud.stream.bindings.mychannel1.destination=file-upload-completed
spring.cloud.stream.bindings.mychannel1.group=metadata-reader

spring.cloud.stream.bindings.mychannel2.destination=file-upload-completed
spring.cloud.stream.bindings.mychannel2.group=metadata-reader

使用上述配置,您可以执行诸如连接等操作,如下所示:

@StreamListener
 public void receive(@Input(Processor.INPUT) SubscribableChannel input1, 
 @Input("mychannel2") SubscribableChannel input2) {
// perform operations (join etc.,)
}

答案 1 :(得分:0)

AFAIK consumer group表示singleton consumer in cluster。如果两个端点都在同一个应用程序中,则没有理由提取新的使用者组。您可以在内部publish-subscribe向所有终端发送传入消息。