Динамическое изменение instanceindex с помощью Spring Cloud Stream Kafka

Похоже на: изменение индекса / количества экземпляров spring-cloud-stream во время выполнения

Я делаю poc по запуску пакета в архитектуре микросервера, и я использую пакет Spring с Spring Cloud Stream Kafka. Я ищу способ динамически создавать несколько экземпляров приложения-потребителя (процессора). Я видел, что можно определить несколько экземпляров с помощью

      spring.cloud.stream.instanceCount=n 
spring.cloud.stream.instanceIndex=[0, ..., n-1]

Однако я не нашел способа динамически изменять значение instanceIndex. Можно ли динамически изменять это значение с помощью Spring Cloud Stream kafka.

Спасибо за любую помощь.

1 ответ

Я нашел решение, как динамически изменять instanceindex автоматически. Я устанавливаю значение minPortNum & maxPortNum и instanceCount в файле свойств и меняю instanceIndex в зависимости от значения port-minPortNum , а затем запускаю столько потребителей, сколько хочу.

      
@component
class ServerPortCustomize implements WebServerFactoryCustomizer {
    @value("${port.number.min}")
    private Integer minPortNum;
    @value("${port.number.max}")
    private Integer maxPortNum;
    @value("${spring.cloud.stream.instanceCount}")
    private Integer instanceCount;
    
    @Override
    public void customize(final ConfigurableWebServerFactory factory) {
        final int port = SocketUtils.findAvailableTcpPort(minPortNum, maxPortNum);
        factory.setPort(port);
        System.getProperties().put("server.port", port);
        System.getProperties().put("spring.cloud.stream.instanceIndex", port-minPortNum);
    }
}

Но я не уверен, что то, как я управляю своими потребителями, распределяется

для этого примера я установил spring.cloud.stream.instanceCount = 3, поэтому я запускаю трех потребителей с индексом экземпляра как значение 0, 1 и 2

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