public sealed class Quota : IMessage<Quota>, IEquatable<Quota>, IDeepCloneable<Quota>, IBufferMessage, IMessage
Quota configuration helps to achieve fairness and budgeting in service usage.
The metric based quota configuration works this way:
- The service configuration defines a set of metrics.
- For API calls, the quota.metric_rules maps methods to metrics with corresponding costs.
- The quota.limits defines limits on the metrics, which will be used for quota checks at runtime.
An example quota configuration in yaml format:
quota: limits:
- name: apiWriteQpsPerProject
metric: library.googleapis.com/write_calls
unit: "1/min/{project}" # rate limit for consumer projects
values:
STANDARD: 10000
(The metric rules bind all methods to the read_calls metric,
except for the UpdateBook and DeleteBook methods. These two methods
are mapped to the write_calls metric, with the UpdateBook method
consuming at twice rate as the DeleteBook method.)
metric_rules:
- selector: "*"
metric_costs:
library.googleapis.com/read_calls: 1
- selector: google.example.library.v1.LibraryService.UpdateBook
metric_costs:
library.googleapis.com/write_calls: 2
- selector: google.example.library.v1.LibraryService.DeleteBook
metric_costs:
library.googleapis.com/write_calls: 1
Corresponding Metric definition:
metrics:
- name: library.googleapis.com/read_calls
display_name: Read requests
metric_kind: DELTA
value_type: INT64
- name: library.googleapis.com/write_calls
display_name: Write requests
metric_kind: DELTA
value_type: INT64
Namespace
Google.ApiAssembly
Google.Api.CommonProtos.dll
Constructors
Quota()
public Quota()
Quota(Quota)
public Quota(Quota other)
Fields
LimitsFieldNumber
public
const
int
LimitsFieldNumber
=
3
Field number for the "limits" field.
MetricRulesFieldNumber
public
const
int
MetricRulesFieldNumber
=
4
Field number for the "metric_rules" field.
Properties
Descriptor
public static MessageDescriptor Descriptor { get; }
Limits
public RepeatedField<QuotaLimit> Limits { get; }
List of QuotaLimit definitions for the service.
MetricRules
public RepeatedField<MetricRule> MetricRules { get; }
List of MetricRule definitions, each one mapping a selected method to one or more metrics.
Parser
public static MessageParser<Quota> Parser { get; }
Methods
CalculateSize()
public int CalculateSize()
Calculates the size of this message in Protocol Buffer wire format, in bytes.
The number of bytes required to write this message to a coded output stream.
Clone()
public Quota Clone()
Creates a deep clone of this object.
Equals(Quota)
public bool Equals(Quota other)
Equals(object)
public override bool Equals(object other)
GetHashCode()
public override int GetHashCode()
MergeFrom(Quota)
public void MergeFrom(Quota other)
Merges the given message into this one.
See the user guide for precise merge semantics.
MergeFrom(CodedInputStream)
public void MergeFrom(CodedInputStream input)
Merges the data from the specified coded input stream with the current message.
See the user guide for precise merge semantics.
ToString()
public override string ToString()
WriteTo(CodedOutputStream)
public void WriteTo(CodedOutputStream output)
Writes the data to the given coded output stream.
output

