[−][src]Enum svc_agent::Destination
Message destination.
This is an abstraction over MQTT topic pattern to determine outgoing message's publish topic.
Understanding message routing is the key thing to use svc-agent. Make sure that you understand the patterns below and their counterparts described in Source.
MQTT topic variables:
MY_ACCOUNT_ID
– AccountId of the current agent that sends the message.MY_VER
– API version string of the current agent. For example:v1
.MY_BROADCAST_URI
– current agent's API specific path to some resource divided by/
. For example:/rooms/ROOM_ID/events
. If you will want to change its structure in the future you must also bumpVER(ME)
.ACCOUNT_ID
– destination AccountId (no specific agent).AGENT_ID
– destination AgentId.VER
– destination agent version.
Variants
Broadcast(String)
Publish a message to each of the topic subscribers.
Typically being used for publishing notification events from a service.
The string supplied is MY_BROADCAST_URI
.
Patterns
Type | Pattern | MQTT topic |
---|---|---|
event | app-to-any | apps/MY_ACCOUNT_ID /api/MY_VER /MY_BROADCAST_URI |
Multicast(AccountId)
Publish a message to any single of SharedGroup agents.
Typically being used for sending requests to services which may have multiple instances.
AccountId is being supplied since we don't care which specific instance will process the message.
Patterns
Type | Pattern | MQTT topic |
---|---|---|
request | one-to_app | agents/MY_AGENT_ID /api/MY_VER /out/ACCOUNT_ID |
Publish a message to the specific instance with known AGENT_ID
.
Typically being used for responding to requests. Also used for making a request to a specific instance of a stateful service.
Values supplied are AGENT_ID
and VER
.
Patterns
Type | Pattern | MQTT topic |
---|---|---|
request | one-to-one | agents/AGENT_ID /api/VER /in/MY_ACCOUNT_ID |
response | one-to_one | agents/AGENT_ID /api/VER /in/MY_ACCOUNT_ID |
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Destination
impl Send for Destination
impl Sync for Destination
impl Unpin for Destination
impl UnwindSafe for Destination
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> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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>,