Java 使线程特定于spring cloud GCP pubsub中的消息通道
我有一个运行GCP PubSub消息的spring云应用程序。我有两个消息入站频道,订阅了两个不同的订阅者。在应用程序的负载/压力测试期间,我面临的问题是,具体的线程数设置如下:Java 使线程特定于spring cloud GCP pubsub中的消息通道,java,spring,spring-cloud,google-cloud-pubsub,java-threads,Java,Spring,Spring Cloud,Google Cloud Pubsub,Java Threads,我有一个运行GCP PubSub消息的spring云应用程序。我有两个消息入站频道,订阅了两个不同的订阅者。在应用程序的负载/压力测试期间,我面临的问题是,具体的线程数设置如下: spring.cloud.gcp.pubsub.subscriber.executor-threads: 350 spring.cloud.gcp.pubsub.subscriber.parallel-pull-count: 2 spring.cloud.gcp.pubsub.subscriber.max-acknow
spring.cloud.gcp.pubsub.subscriber.executor-threads: 350
spring.cloud.gcp.pubsub.subscriber.parallel-pull-count: 2
spring.cloud.gcp.pubsub.subscriber.max-acknowledgement-threads: 700
当通道1的消息拉入的进程繁忙时,我没有足够的线程供通道2拉入消息。解决方案是限制/配置每个通道的线程数。我发现很难弄明白这一点。请帮帮我!以下是我提到的渠道:
@Bean
@ServiceActivator(inputChannel = "pubsubInputChannel1")
public MessageHandler extractionMessageReceiver() {
return message -> {
// do something
};
}
@Bean
@ServiceActivator(inputChannel = "pubsubInputChannel2")
public MessageHandler extractionMessageReceiver() {
return message -> {
// do something
};
}
请注意,订户线程一直处于繁忙状态,直到消息拉动的特定进程结束。我熟悉Cloud PubSub,但不熟悉Spring。看起来问题主要是关于SpringServiceActivator节流的。也许将问题改为“如何通过inputChannel限制ServiceActivator的激活?”