pub struct Pulsar<Exe: Executor> { /* private fields */ }Expand description
Pulsar client
This is the starting point of this API, used to create connections, producers and consumers
While methods are provided to create the client, producers and consumers directly, the builders should be used for more clarity:
use pulsar::{Pulsar, TokioExecutor};
let addr = "pulsar://127.0.0.1:6650";
// you can indicate which executor you use as the return type of client creation
let pulsar: Pulsar<_> = Pulsar::builder(addr, TokioExecutor)
.with_auth(auth)
.with_connection_retry_options(retry)
.build()
.await?;
let mut producer = pulsar
.producer()
.with_topic("non-persistent://public/default/test")
.with_name("my producer")
.build()
.await?;Implementations§
Source§impl<Exe: Executor> Pulsar<Exe>
impl<Exe: Executor> Pulsar<Exe>
Sourcepub fn builder<S: Into<String>>(url: S, executor: Exe) -> PulsarBuilder<Exe>
pub fn builder<S: Into<String>>(url: S, executor: Exe) -> PulsarBuilder<Exe>
creates a new client builder
use pulsar::{Pulsar, TokioExecutor};
let addr = "pulsar://127.0.0.1:6650";
// you can indicate which executor you use as the return type of client creation
let pulsar: Pulsar<_> = Pulsar::builder(addr, TokioExecutor).build().await?;Sourcepub fn consumer(&self) -> ConsumerBuilder<Exe>
pub fn consumer(&self) -> ConsumerBuilder<Exe>
creates a consumer builder
use pulsar::{SubType, Consumer};
let mut consumer: Consumer<TestData, _> = pulsar
.consumer()
.with_topic("non-persistent://public/default/test")
.with_consumer_name("test_consumer")
.with_subscription_type(SubType::Exclusive)
.with_subscription("test_subscription")
.build()
.await?;Sourcepub fn producer(&self) -> ProducerBuilder<Exe>
pub fn producer(&self) -> ProducerBuilder<Exe>
creates a producer builder
let mut producer = pulsar
.producer()
.with_topic("non-persistent://public/default/test")
.with_name("my producer")
.build()
.await?;Sourcepub fn reader(&self) -> ConsumerBuilder<Exe>
pub fn reader(&self) -> ConsumerBuilder<Exe>
creates a reader builder
use pulsar::reader::Reader;
let mut reader: Reader<TestData, _> = pulsar
.reader()
.with_topic("non-persistent://public/default/test")
.with_consumer_name("my_reader")
.into_reader()
.await?;Sourcepub async fn lookup_topic<S: Into<String>>(
&self,
topic: S,
) -> Result<BrokerAddress, Error>
pub async fn lookup_topic<S: Into<String>>( &self, topic: S, ) -> Result<BrokerAddress, Error>
gets the address of a broker handling the topic
let broker_address = pulsar.lookup_topic("persistent://public/default/test").await?;Sourcepub async fn lookup_partitioned_topic_number<S: Into<String>>(
&self,
topic: S,
) -> Result<u32, Error>
pub async fn lookup_partitioned_topic_number<S: Into<String>>( &self, topic: S, ) -> Result<u32, Error>
gets the number of partitions for a partitioned topic
let nb = pulsar.lookup_partitioned_topic_number("persistent://public/default/test").await?;Sourcepub async fn lookup_partitioned_topic<S: Into<String>>(
&self,
topic: S,
) -> Result<Vec<(String, BrokerAddress)>, Error>
pub async fn lookup_partitioned_topic<S: Into<String>>( &self, topic: S, ) -> Result<Vec<(String, BrokerAddress)>, Error>
gets the address of brokers handling the topic’s partitions. If the topic is not a partitioned topic, result will be a single element containing the topic and address of the non-partitioned topic provided.
let broker_addresses = pulsar.lookup_partitioned_topic("persistent://public/default/test").await?;Sourcepub async fn get_topics_of_namespace(
&self,
namespace: String,
mode: Mode,
) -> Result<Vec<String>, Error>
pub async fn get_topics_of_namespace( &self, namespace: String, mode: Mode, ) -> Result<Vec<String>, Error>
gets the list of topics from a namespace
use pulsar::message::proto::command_get_topics_of_namespace::Mode;
let topics = pulsar.get_topics_of_namespace("public/default".to_string(), Mode::Persistent).await?;Sourcepub async fn send<S: Into<String>, M: SerializeMessage + Sized>(
&self,
topic: S,
message: M,
) -> Result<SendFuture, Error>
pub async fn send<S: Into<String>, M: SerializeMessage + Sized>( &self, topic: S, message: M, ) -> Result<SendFuture, Error>
Sends a message on a topic.
This function will lazily initialize and re-use producers as needed. For better
control over producers, creating and using a Producer is recommended.
use pulsar::message::proto::command_get_topics_of_namespace::Mode;
let topics = pulsar.send("persistent://public/default/test", "hello world!").await?;Trait Implementations§
Auto Trait Implementations§
impl<Exe> Freeze for Pulsar<Exe>
impl<Exe> !RefUnwindSafe for Pulsar<Exe>
impl<Exe> Send for Pulsar<Exe>
impl<Exe> Sync for Pulsar<Exe>
impl<Exe> Unpin for Pulsar<Exe>
impl<Exe> UnsafeUnpin for Pulsar<Exe>
impl<Exe> !UnwindSafe for Pulsar<Exe>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more