使用Java客户端库配置PubSub的消息保留持续时间
我正在我的桌面应用程序中使用。我为特定主题创建订阅并从中接收数据。我想知道是否可以配置订阅的邮件保留期限。我哪儿都找不到。谢谢 为了让问题更清楚,我粘贴了用于创建订阅的代码块:使用Java客户端库配置PubSub的消息保留持续时间,java,google-cloud-pubsub,Java,Google Cloud Pubsub,我正在我的桌面应用程序中使用。我为特定主题创建订阅并从中接收数据。我想知道是否可以配置订阅的邮件保留期限。我哪儿都找不到。谢谢 为了让问题更清楚,我粘贴了用于创建订阅的代码块: String topicName = "some-topic"; String subscriptionName = "some-subscription"; ProjectTopicName topic = ProjectTopicName.of(PROJECT_ID, topicName); ProjectSubsc
String topicName = "some-topic";
String subscriptionName = "some-subscription";
ProjectTopicName topic = ProjectTopicName.of(PROJECT_ID, topicName);
ProjectSubscriptionName subscription = ProjectSubscriptionName.of(PROJECT_ID, subscriptionName);
SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create(); // I reuse this object so I create it in advance
try {
subscriptionAdminClient.createSubscription(subscription,
topic,
PushConfig.getDefaultInstance(),
0
);
} catch (ApiException e) {
if (e.getStatusCode().getCode() != StatusCode.Code.ALREADY_EXISTS) {
subscriptionAdminClient.close();
}
}
您可以用Java配置订阅的消息保留期限。创建
订阅
对象时,可以在创建请求中提供。要在Java中执行此操作,请使用object,如本例所示(使用com.google.cloud:google cloud pubsub:1.86.0
dependency):
请注意,setMessageRetentionDuration
将a作为参数,因此您可能需要使用(fromMillis
方法)将毫秒转换为protobufDuration
。还请注意,此字段:
不能超过7天或少于10分钟
这里似乎没有足够的信息来准确回答你的问题。查看我们的指南,编辑您的问题以添加更多细节。让我们看看你尝试了什么,为什么它不适合你,并再次检查你是否有一个具体、客观的问题可以回答。这就是我一直在寻找的!非常感谢你!
package com.example;
import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
import com.google.pubsub.v1.Subscription;
import com.google.pubsub.v1.TopicName;
import com.google.protobuf.util.Durations;
import java.io.IOException;
public class PubSubCreateSubscription {
static Subscription createSubscriptionWithMessageRetentionDuration(
String topicName,
String subscriptionName,
long messageRetentionDurationInMillis
) throws IOException {
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
Subscription request = Subscription.newBuilder()
.setName(subscriptionName)
.setTopic(topicName)
.setMessageRetentionDuration(Durations
.fromMillis(messageRetentionDurationInMillis))
.build();
return subscriptionAdminClient
.createSubscription(request);
}
}
public static void main(String[] args)
{
String topicName = "projects/[PROJECT]/topics/[TOPIC_NAME]";
String subscriptionName = "projects/[PROJECT]/subscriptions/[SUBSCRIPTION_NAME]";
try {
Subscription mySubscription = createSubscriptionWithMessageRetentionDuration(
topicName,
subscriptionName,
600000 // 600 000 ms = 10 minutes
);
// [...]
} catch (IOException e) {
e.printStackTrace();
}
}
}