首页 文章

我可以使用Spring Cloud Stream绑定到多个消费者群体吗?

提问于
浏览
0

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

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

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

2 回答

  • 2

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

    每个消息队列,你的意思是,每个绑定?

    此外,当您指定属性 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
    

    使用上面的配置,您可以执行诸如join等操作,如下所示:

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

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

相关问题