object Topic
A pub sub topic is an actor that handles subscribing to a topic and publishing messages to all subscribed actors.
It is mostly useful in a clustered setting, where it is intended to be started once on every node that want to house subscribers or publish messages to the topic, but it also works in a local setting without cluster.
In a clustered context messages are deduplicated so that there is at most one message sent to each node for each publish and if there are no subscribers on a node, no message is sent to it. Note that the list of subscribers is eventually consistent and there are no delivery guarantees built in.
Each topic results in a akka.actor.typed.receptionist.ServiceKey in the akka.actor.typed.receptionist.Receptionist so the same scaling recommendation holds for topics, see docs: https://doc.akka.io/libraries/akka-core/current/typed/actor-discovery.html#receptionist-scalability
- Source
- Topic.scala
- Alphabetic
- By Inheritance
- Topic
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- trait Command[T] extends internal.pubsub.TopicImpl.Command[T]
Not for user extension
Not for user extension
- Annotations
- @DoNotInherit()
- trait TopicStats extends AnyRef
Response to the
GetTopicStats
query.Response to the
GetTopicStats
query.Note that this is a snapshot of the state at one point in time, that there was subscribers at that time does not guarantee there is once this response arrives. The information cannot be used to achieve delivery guarantees, but can be useful in for example tests, to observe a subscription completed before publishing messages.
Not for user extension.
- Annotations
- @DoNotInherit()
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply[T](topicName: String, ttl: FiniteDuration)(implicit classTag: ClassTag[T]): Behavior[Command[T]]
Scala API: Create a topic actor behavior for the given topic name and message type with a TTL making it terminate itself after a time period with no local subscribers and no locally published messages.
Scala API: Create a topic actor behavior for the given topic name and message type with a TTL making it terminate itself after a time period with no local subscribers and no locally published messages.
Note: for many use cases it is more convenient to use the PubSub registry to have an ActorSystem global set of re-usable topics instead of manually creating and managing the topic actors.
- def apply[T](topicName: String)(implicit classTag: ClassTag[T]): Behavior[Command[T]]
Scala API: Create a topic actor behavior for the given topic name and message type.
Scala API: Create a topic actor behavior for the given topic name and message type.
Note: for many use cases it is more convenient to use the PubSub registry to have an ActorSystem global set of re-usable topics instead of manually creating and managing the topic actors.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- def create[T](messageClass: Class[T], topicName: String, ttl: Duration): Behavior[Command[T]]
Java API: Create a topic actor behavior for the given topic name and message class with a TTL making it terminate itself after a time period with no local subscribers and no locally published messages.
Java API: Create a topic actor behavior for the given topic name and message class with a TTL making it terminate itself after a time period with no local subscribers and no locally published messages.
Note: for many use cases it is more convenient to use the PubSub registry to have an ActorSystem global set of re-usable topics instead of manually creating and managing the topic actors.
- def create[T](messageClass: Class[T], topicName: String): Behavior[Command[T]]
Java API: Create a topic actor behavior for the given topic name and message class
Java API: Create a topic actor behavior for the given topic name and message class
Note: for many use cases it is more convenient to use the PubSub registry to have an ActorSystem global set of re-usable topics instead of manually creating and managing the topic actors.
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def getTopicStats[T](replyTo: ActorRef[TopicStats]): Command[T]
Java API: Get a summary of the state for a local topic actor.
Java API: Get a summary of the state for a local topic actor.
See TopicStats for caveats
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def publish[T](message: T): Command[T]
Java API: Publish the message to all currently known subscribers.
- def subscribe[T](subscriber: ActorRef[T]): Command[T]
Java API: Subscribe to this topic.
Java API: Subscribe to this topic. Should only be used for local subscribers.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unsubscribe[T](subscriber: ActorRef[T]): Command[T]
Java API: Unsubscribe a previously subscribed actor from this topic.
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- object GetTopicStats
Scala API: Get a summary of the state for a local topic actor.
Scala API: Get a summary of the state for a local topic actor.
See TopicStats for caveats
- object Publish
Scala API: Publish the message to all currently known subscribers.
- object Subscribe
Scala API: Subscribe to this topic.
Scala API: Subscribe to this topic. Should only be used for local subscribers.
- object Unsubscribe
Scala API: Unsubscribe a previously subscribed actor from this topic.