Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Subscribers don't reconnect to the subscription when there is no traffic

I am using StreamingPull mechanism to receive messages from the Pub/Sub.

Here is only 2 overriding for default SubscriberFactory settings:

@Bean
    public SubscriberFactory subscriberFactory(
            GcpProjectIdProvider id,
            TransportChannelProvider channelProvider,
            CredentialsProvider credentialsProvider) throws IOException {
        PubSubConfiguration config = new PubSubConfiguration();
        config.initialize(id.getProjectId());
        config.getSubscriber().setParallelPullCount(2); //overriding1
        config.getSubscriber().setMaxDurationPerAckExtension(0); //overriding2
        DefaultSubscriberFactory factory = new DefaultSubscriberFactory(id, config);
        factory.setChannelProvider(channelProvider);
        factory.setPullEndpoint(url());
        factory.setCredentialsProvider(credentialsProvider);
        return factory;
    }
 

The second overriding helps me to resolve this issue: https://stackoverflow.com/questions/77711978/my-subscriber-receive-a-message-from-gcp-subscription-w...

I don't have any other overriding, but when there is no trafic I get this picute of number_of_open_streaming_pull subscription metric:

Screenshot 2024-02-13 at 17.54.46.png

I know that Pub/Sub prefers to avoid a long-running sticky connection and client library should reopens a StreamingPull connection.. It works well when there is an active traffic. Any advice I can achive a stable reopens even when there is no traffic?

I found some issues about this:
spring-attic/spring-cloud-gcp#1005 - resolved as internal pub/sub issue
spring-attic/spring-cloud-gcp#2552 - adviced to use Synchronous Pull, but I want to go further with Asynchronous pull because for my app lower latency and higher throughput are very important.

We use spring-cloud-gcp-pubsub:5.0

1 1 855
1 REPLY 1