Как использовать RMQ и Spring Cloud Stream для создания разделителя на основе производителя?

Я пытаюсь найти пример весеннего облачного потока, где он создает продюсер на основе разделов для RMQ. Я хочу посмотреть, как это создаст привязку для этих очередей, поскольку RMQ не поддерживает разделы для собственной темы, но создает количество очередей, эквивалентное количеству разделов (я читал это, возможно, я ошибаюсь). Сначала я хочу понять, как создать производителя с использованием весеннего облачного потока в RMQ для производителя на основе разделов.

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 так что вы можете видеть, как очереди потребителей связаны.

foo обмениваться привязками:

Выражение может быть любым допустимым выражением, оцененным по отношению к сообщению (например, payload.hashCode()); тогда это моддируется % по счетчику разделов, чтобы определить окончательный раздел.

Другие вопросы по тегам