lightspeed/pubsub
Deterministic PubSub abstraction for channel fanout.
Types
PubSub adapter model.
pub type Adapter {
SingleNode
ClusterReady(node_id: String, cluster: String)
}
Constructors
-
SingleNode -
ClusterReady(node_id: String, cluster: String)
Broker
opaquePubSub broker state.
pub opaque type Broker(message)
One routed delivery.
pub type Delivery(message) {
Delivery(
topic: String,
subscriber_id: String,
message: message,
)
}
Constructors
-
Delivery(topic: String, subscriber_id: String, message: message)
Values
pub fn delivery_message(delivery: Delivery(message)) -> message
Message payload for one delivery.
pub fn delivery_subscriber(delivery: Delivery(message)) -> String
Subscriber id for one delivery.
pub fn new_cluster_ready(
node_id: String,
cluster: String,
) -> Broker(message)
New cluster-ready broker.
pub fn publish(
broker: Broker(message),
topic: String,
message: message,
) -> #(Broker(message), List(Delivery(message)))
Publish one message to one topic.
pub fn subscribe(
broker: Broker(message),
topic: String,
subscriber_id: String,
) -> Broker(message)
Subscribe one subscriber to one topic.
pub fn subscriber_count(
broker: Broker(message),
topic: String,
) -> Int
Number of subscribers for one topic.
pub fn subscribers(
broker: Broker(message),
topic: String,
) -> List(String)
Subscribers for one topic in stable join order.
pub fn topic_labels(broker: Broker(message)) -> List(String)
Stable topic labels for tests and logs.