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)
Parameter | |
---|---|
Name | Description |
other |
Quota |
Fields
LimitsFieldNumber
public const int LimitsFieldNumber = 3
Field number for the "limits" field.
Field Value | |
---|---|
Type | Description |
int |
MetricRulesFieldNumber
public const int MetricRulesFieldNumber = 4
Field number for the "metric_rules" field.
Field Value | |
---|---|
Type | Description |
int |
Properties
Descriptor
public static MessageDescriptor Descriptor { get; }
Property Value | |
---|---|
Type | Description |
MessageDescriptor |
Limits
public RepeatedField<QuotaLimit> Limits { get; }
List of QuotaLimit definitions for the service.
Property Value | |
---|---|
Type | Description |
RepeatedFieldQuotaLimit |
MetricRules
public RepeatedField<MetricRule> MetricRules { get; }
List of MetricRule definitions, each one mapping a selected method to one or more metrics.
Property Value | |
---|---|
Type | Description |
RepeatedFieldMetricRule |
Parser
public static MessageParser<Quota> Parser { get; }
Property Value | |
---|---|
Type | Description |
MessageParserQuota |
Methods
CalculateSize()
public int CalculateSize()
Calculates the size of this message in Protocol Buffer wire format, in bytes.
Returns | |
---|---|
Type | Description |
int |
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.
Returns | |
---|---|
Type | Description |
Quota |
A deep clone of this object. |
Equals(Quota)
public bool Equals(Quota other)
Parameter | |
---|---|
Name | Description |
other |
Quota |
Returns | |
---|---|
Type | Description |
bool |
Equals(object)
public override bool Equals(object other)
Parameter | |
---|---|
Name | Description |
other |
object |
Returns | |
---|---|
Type | Description |
bool |
GetHashCode()
public override int GetHashCode()
Returns | |
---|---|
Type | Description |
int |
MergeFrom(Quota)
public void MergeFrom(Quota other)
Merges the given message into this one.
Parameter | |
---|---|
Name | Description |
other |
Quota |
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.
Parameter | |
---|---|
Name | Description |
input |
CodedInputStream |
See the user guide for precise merge semantics.
ToString()
public override string ToString()
Returns | |
---|---|
Type | Description |
string |
WriteTo(CodedOutputStream)
public void WriteTo(CodedOutputStream output)
Writes the data to the given coded output stream.
Parameter | |
---|---|
Name | Description |
output |
CodedOutputStream Coded output stream to write the data to. Must not be null. |