我正在编写一个处理事件消息的应用程序(发布到主题file-upload-completed
)。我有多个端点应该使用这些消息(metadata-reader
和quota-checker
),出于实际原因,我希望将这些端点一起部署在聚合包中。
使用Spring Cloud Stream,我可以使用spring.cloud.stream.bindings.file-upload-completed.group=metadata-reader
为第一个端点设置使用者组;我还想处理quota-check
组下的消息,但基于属性的配置只允许每个消息队列绑定一个消费者组。
有没有办法配置Spring Cloud Stream,以便我可以绑定到同一个应用程序中多个使用者组下的单个消息队列?
答案 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
向所有终端发送传入消息。