Was ist die Ackdeadline -Eigenschaft für Abonnement und Ackdeadline für Abonnent in GCP Pub/Sub?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Was ist die Ackdeadline -Eigenschaft für Abonnement und Ackdeadline für Abonnent in GCP Pub/Sub?

Post by Anonymous »

Ich versuche, den Unterschied zwischen der Ackdeadline -Eigenschaft im Abonnement und der Ackdeadline -Eigenschaft auf dem Abonnenten zu verstehen. Es ist klar, dass die Ackdeadline im Abonnement der Zeitraum ist, nach dem das Abonnement die Nachricht an den Abonnenten weiterleitet. Der Mindestwert beträgt 10 Sekunden für das Abonnement. Ich verstehe die Semantik der Ackdeadline für den Abonnenten nicht. Zu Ihrer Information, mein Anwendungsfall beinhaltet das Erhalten der Nachricht und das Einlegen der Nachrichten auf ein Kafka-Thema. Es ist mir egal, ob ich nicht alle Nachrichten verarbeite. Ich muss die neuesten Nachrichten verarbeiten und weiß nicht, ob es sich um eine veraltete oder neueste Nachricht handelt, ohne zuerst die Nachrichten zu analysieren. Ich möchte die Ackdeadline nicht erhöhen und die Nachricht ignorieren/verwerfen, wenn mein Abonnent verzögert. Vielen Dank! Ich bin immer noch verwirrt, was der Wert auf jeden haben soll. Mein Abonnement hat die folgenden Einstellungen: < /p>

Code: Select all

public static async Task CreateSubscription(string CmeProjectId, string Topic, SubscriptionName SubscriptionId)
{
SubscriberServiceApiClient subscriberService = await SubscriberServiceApiClient.CreateAsync();
TopicName topicName = TopicName.FromProjectTopic(CmeProjectId, Topic);
try
{
//Please read common subscription properties: https://cloud.google.com/pubsub/docs/subscription-properties
var subscriptionRequest = new Subscription
{
SubscriptionName = SubscriptionId,
TopicAsTopicName = topicName,
//How long are unacked messages stored. Default = 7 days, minimum = 10 minutes.
MessageRetentionDuration = new Duration
{
Seconds = (long)TimeSpan.FromMinutes(10).TotalSeconds
},
//How long do Subscriptions survive without any activity. Default value = 31 days, minimum value = 1 day
ExpirationPolicy = new ExpirationPolicy
{
Ttl = Duration.FromTimeSpan(TimeSpan.FromDays(1))
},
/*
Create a deadletter queue to discard messages if message was not ackd after 5 retries.
Do not attach a subscription to dead letter queue as we want to drop stale messages and not store them.
MaxDelivery attempts has a minimum value of 5.
*/
DeadLetterPolicy = new DeadLetterPolicy
{
MaxDeliveryAttempts = 5,
DeadLetterTopic = TopicName.FromProjectTopic(MAREX_PROJECT_ID, "dead-letter-topic").ToString()
},
//Process the message exactly once.
//Messages are not redelivered if message is acked or when message is outstanding (https://cloud.google.com/pubsub/docs/exactly-once-delivery)
EnableExactlyOnceDelivery = true
};
await subscriberService.CreateSubscriptionAsync(subscriptionRequest);
}
catch (RpcException e) when (e.Status.StatusCode == StatusCode.AlreadyExists)
{
Console.WriteLine("Subscription already exists!");
}

return subscriberService;
}
< /code>
Der Abonnent ist Folgendes: < /p>
public static async Task CreateSubscriber(SubscriptionName subscriptionId)
{
SubscriberClient subscriber = await new SubscriberClientBuilder
{
SubscriptionName = subscriptionId,
Settings = new SubscriberClient.Settings
{
//Lease time before which a message must either be acknowledged or have its lease extended.
AckDeadline = TimeSpan.FromSeconds(10),

//Number of outstanding messages after which subscription won't send any messages.
//Total byte count of all outstanding messages that won't fill up available memory.
FlowControlSettings = new FlowControlSettings(maxOutstandingElementCount: 50000, maxOutstandingByteCount: 50000 * 560)
}
}.BuildAsync();
return subscriber;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post