pub/sub消息需要很长时间

5hcedyr0  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(425)

我有一个简单的springboot应用程序托管在googlecloudrun中,它将googlepub/sub消息发布到同一个项目中的某个主题。
这大约需要5分钟的时间。下面是我用来发布googlepub/sub消息的代码。但在appengine环境中,同样的方法工作得很好,没有任何延迟。

ApiFuture<String> messageIdFuture = com.google.cloud.pubsub.v1.Publisher.publish(pubsubMessage);
            ApiFutures.addCallback(messageIdFuture, new ApiFutureCallback<String>() {
                @Override
                public void onFailure(Throwable throwable) {
                    if (throwable instanceof ApiException) {
                        ApiException apiException = ((ApiException) throwable);
                        // details on the API exception
                        log.error("APIException Status Code: {}", apiException.getStatusCode().getCode());
                        log.error("APIException is Retryable: {}", apiException.isRetryable());
                    }
                    log.error("Error publishing message: {}", pubSubMsg);
                }
                @Override
                public void onSuccess(String messageId) {
                    log.info("Success msg after publish: {}", messageId);
                }
            }, MoreExecutors.directExecutor());

如何克服发布发布/订阅消息的延迟?

2w3rbyxf

2w3rbyxf1#

如果我没记错的话,springboot会创建一个包含嵌套jar的jar文件。在cloudrun中,这些文件在启动时被解压,这会影响运行时间。
googleappengine是一个托管服务;您无法控制运行时,然而,需要调整云运行容器以优化环境。
基于此,我希望您需要优化应用程序在容器中的运行方式。你在使用多阶段构建吗?您还可以尝试使用jib插件来封装您的应用程序,看看这是否可以改善您的计时。
我对springboot不太熟悉,但本文讨论了如何将代码容器化以获得最佳性能。这些链接提供了一些关于jib插件配置、github上的jib扩展以及本文的有用信息。

相关问题