有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用RMQ和spring cloud stream创建基于分区的生产者?

我试图找到SpringCloudStream的例子,它为RMQ创建了基于分区的生产者。我想看看它将如何为这些队列创建绑定,因为RMQ本机不支持主题的分区,但它将创建与分区数量相等的队列数量(我读了这篇文章,可能是错的)。首先,我想了解如何在RMQ上使用SpringCloudStream为基于分区的producer创建producer


共 (1) 个答案

  1. # 1 楼答案

    @SpringBootApplication
    @EnableBinding(Source.class)
    public class So43614477Application implements CommandLineRunner {
    
        public static void main(String[] args) {
            SpringApplication.run(So43614477Application.class, args);
        }
    
        @Autowired
        private MessageChannel output;
    
        @Override
        public void run(String... args) throws Exception {
            output.send(MessageBuilder.withPayload("fiz").setHeader("whichPart", 0).build());
            output.send(MessageBuilder.withPayload("buz").setHeader("whichPart", 1).build());
        }
    
    }
    

    有房地产

    spring.cloud.stream.bindings.output.destination=foo
    spring.cloud.stream.bindings.output.producer.partition-key-expression=headers['whichPart']
    spring.cloud.stream.bindings.output.producer.partition-count=2
    
    spring.cloud.stream.bindings.output.producer.required-groups=bar
    

    我添加了required-groups,这样您就可以看到消费者队列是如何绑定的

    enter image description here

    foo呼气绑定:

    enter image description here

    表达式可以是针对消息计算的任何有效表达式(例如payload.hashCode());然后根据分区计数调整%以确定最终分区