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
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Topic
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. trait Command[T] extends internal.pubsub.TopicImpl.Command[T]

    Not for user extension

    Not for user extension

    Annotations
    @DoNotInherit()
  2. 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

  1. def apply[T](topicName: String, ttl: FiniteDuration)(implicit classTag: ClassTag[T]): [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.

  2. def apply[T](topicName: String)(implicit classTag: ClassTag[T]): [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.

  3. def create[T](messageClass: Class[T], topicName: String, ttl: Duration): [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.

  4. def create[T](messageClass: Class[T], topicName: String): [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.

  5. def getTopicStats[T](replyTo: [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

  6. def publish[T](message: T): Command[T]

    Java API: Publish the message to all currently known subscribers.

  7. 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.

  8. def unsubscribe[T](subscriber: ActorRef[T]): Command[T]

    Java API: Unsubscribe a previously subscribed actor from this topic.

  9. 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

  10. object Publish

    Scala API: Publish the message to all currently known subscribers.

  11. object Subscribe

    Scala API: Subscribe to this topic.

    Scala API: Subscribe to this topic. Should only be used for local subscribers.

  12. object Unsubscribe

    Scala API: Unsubscribe a previously subscribed actor from this topic.