[−][src]Struct svc_agent::mqtt::ShortTermTimingProperties
Timing properties of a single message in a chain.
Consider a service that receives a request and in part makes a request to another service. The second service sends the response and then first services sends the response to the client. Here we have a chain of four messages: request -> request -> response -> response.
For monitoring and analytical purposes it's useful to know how long it takes as a whole and which part of the system make the biggest latency.
The conventions contain a number of properties that messages must contain.
For API simplicity in svc-agent they are separated in two structs. Those which gets passed through the whole chain are LongTermTimingProperties and those which are related only to a single message in the chain are in this struct.
When starting processing a request you should save the current time and when it's finished
you should call until_now
(#method.until_now) function with this value and then pass the
result object to OutgoingMessageProperties.
If you make an authorization call to an external system during the processing you may want to meausure it during the call and set it to the object to monitor authorization latency as well.
Example
let start_timestamp = Utc::now(); let authz_time = authorize(&request)?; let response_payload = process_request(&request)?; let mut short_term_timing = ShortTermTimingProperties::until_now(start_timestamp); short_term_timing.set_authorization_time(authz_time); request.to_response(response_payload, ResponeStatus::OK, short_term_timing, "v1")
Methods
impl ShortTermTimingProperties
[src]
pub fn until_now(start_timestamp: DateTime<Utc>) -> Self
[src]
Builds ShortTermTimingProperties and sets processing time in one call.
Arguments
start_timestamp
– UTC timestamp of message processing beginning.
Example
let mut short_term_timing = ShortTermTimingProperties::until_now(start_timestamp);
pub fn new(timestamp: DateTime<Utc>) -> Self
[src]
Builds ShortTermTimingProperties by explicit timestamp.
Arguments
timestamp
– UTC timestamp of message processing finish.
Example
let mut short_term_timing = ShortTermTimingProperties::until_now(Utc::now());
pub fn set_processing_time(&mut self, processing_time: Duration) -> &mut Self
[src]
pub fn set_authorization_time(
&mut self,
authorization_time: Duration
) -> &mut Self
[src]
&mut self,
authorization_time: Duration
) -> &mut Self
Trait Implementations
impl Clone for ShortTermTimingProperties
[src]
fn clone(&self) -> ShortTermTimingProperties
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for ShortTermTimingProperties
[src]
impl<'de> Deserialize<'de> for ShortTermTimingProperties
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Serialize for ShortTermTimingProperties
[src]
Auto Trait Implementations
impl RefUnwindSafe for ShortTermTimingProperties
impl Send for ShortTermTimingProperties
impl Sync for ShortTermTimingProperties
impl Unpin for ShortTermTimingProperties
impl UnwindSafe for ShortTermTimingProperties
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,