[英]GCP Pub/Sub Client, GrpcSubscriberStub, Timeout
我正在嘗試使用 GrpcSubscriberStub 進行“同步拉取”,如示例https://cloud.google.com/pubsub/docs/pull
SubscriberStubSettings subscriberStubSettings =
SubscriberStubSettings.newBuilder()
.setTransportChannelProvider(
SubscriberStubSettings.defaultGrpcTransportProviderBuilder()
.setMaxInboundMessageSize(20 << 20) // 20MB
.build())
.build();
try (SubscriberStub subscriber = GrpcSubscriberStub.create(subscriberStubSettings)) {
// String projectId = "my-project-id";
// String subscriptionId = "my-subscription-id";
// int numOfMessages = 10; // max number of messages to be pulled
String subscriptionName = ProjectSubscriptionName.format(projectId, subscriptionId);
PullRequest pullRequest =
PullRequest.newBuilder()
.setMaxMessages(numOfMessages)
.setReturnImmediately(false) // return immediately if messages are not available
.setSubscription(subscriptionName)
.build();
// use pullCallable().futureCall to asynchronously perform this operation
PullResponse pullResponse = subscriber.pullCallable().call(pullRequest);
List<String> ackIds = new ArrayList<>();
for (ReceivedMessage message : pullResponse.getReceivedMessagesList()) {
// handle received message
// ...
ackIds.add(message.getAckId());
}
// acknowledge received messages
AcknowledgeRequest acknowledgeRequest =
AcknowledgeRequest.newBuilder()
.setSubscription(subscriptionName)
.addAllAckIds(ackIds)
.build();
// use acknowledgeCallable().futureCall to asynchronously perform this operation
subscriber.acknowledgeCallable().call(acknowledgeRequest);
return pullResponse.getReceivedMessagesList();
}
但是我不知道如何使用選項“setReturnImmediately(false)”設置拉取超時。
你能幫助我嗎?
要更改拉取超時,您需要修改SubscriberStubSettings
。
例如,將 pull 的總超時時間設置為 30 秒:
SubscriberStubSettings.Builder subscriberStubSettingsBuilder =
SubscriberStubSettings.newBuilder();
subscriberStubSettingsBuilder
.pullSettings()
.setRetrySettings(
subscriberStubSettingsBuilder.pullSettings().getRetrySettings().toBuilder()
.setTotalTimeout(Duration.ofSeconds(30))
.build());
SubscriberStubSettings subscriberStubSettings = subscriberStubSettingsBuilder.build();
這是基於此處的 SubscriberStubSettings 文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.