kat*_*aty 5 apache-kafka spring-boot apache-kafka-streams spring-kafka spring-batch-stream
类似于:在运行时更改 spring-cloud-stream 实例索引/计数
我在微服务器架构中启动批处理时做了一个 poc,我正在使用 Spring Batch 和 Spring Cloud Stream Kafka。我正在寻找一种方法来动态创建消费者(处理器)应用程序的多个实例。我看到可以定义多个实例
spring.cloud.stream.instanceCount=n
spring.cloud.stream.instanceIndex=[0, ..., n-1]
Run Code Online (Sandbox Code Playgroud)
但是我还没有找到动态改变 instanceIndex 值的方法。是否可以使用 Spring Cloud Stream kafka 动态修改此值。
谢谢你的帮助。
我找到了如何自动动态更改实例索引的解决方案。我在属性文件中设置了 minPortNum 和 maxPortNum 以及 instanceCount 的值,并根据port-minPortNum的值改变 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);
}
}
Run Code Online (Sandbox Code Playgroud)
对于这个例子,我设置了 spring.cloud.stream.instanceCount=3,所以我运行三个消费者,实例索引值为 0、1 和 2
归档时间: |
|
查看次数: |
87 次 |
最近记录: |