Динамическое изменение 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