如同:在运行时更改 spring-cloud-stream 实例索引/计数 https://stackoverflow.com/questions/37579939/changing-spring-cloud-stream-instance-index-count-at-runtime
我在微服务器架构中对批处理的启动做了一个 poc,并且我将 Spring Batch 与 Spring Cloud Stream Kafka 结合使用。我正在寻找一种动态创建消费者(处理器)应用程序的多个实例的方法。
我发现可以定义多个实例
spring.cloud.stream.instanceCount=n
spring.cloud.stream.instanceIndex=[0, ..., n-1]
但是我还没有找到动态更改instanceIndex值的方法。
是否可以使用 Spring Cloud Stream kafka 动态修改此值。
谢谢你的帮助。
我找到了如何自动动态更改实例索引的解决方案。
我在属性文件中设置了 minPortNum 和 maxPortNum 以及 instanceCount 的值,并根据以下值改变 instanceIndex端口最小端口号,然后我运行尽可能多的消费者。
@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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)