Interface GroupEventBus


public interface GroupEventBus
Event bus for intra-group communication.

GroupEventBus provides publish-subscribe messaging within an AgentGroup. Members can publish events and subscribe to receive events matching specific criteria.

Usage Example


 GroupEventBus bus = group.getEventBus();

 // Subscribe to all member events
 bus.subscribe(GroupEvent.Type.MEMBER_JOINED, event -> {
     System.out.println("New member: " + event.sourceAgentId());
 });

 // Subscribe to events for specific agent
 bus.subscribeFor("agent-1", event -> {
     System.out.println("Event for agent-1: " + event.type());
 });

 // Publish an event
 bus.publish(GroupEvent.message(groupId, agentId, "Hello everyone!"));
 
  • Method Details

    • getGroupId

      String getGroupId()
      Returns the group ID this bus belongs to.
      Returns:
      group ID
    • publish

      void publish(GroupEvent event)
      Publishes an event to all subscribers.
      Parameters:
      event - event to publish
    • publishAsync

      CompletableFuture<Void> publishAsync(GroupEvent event)
      Publishes an event asynchronously.
      Parameters:
      event - event to publish
      Returns:
      future completing when all subscribers processed
    • publishMessage

      default void publishMessage(String sourceAgentId, String content)
      Publishes a message event.
      Parameters:
      sourceAgentId - sender agent ID
      content - message content
    • subscribe

      String subscribe(Consumer<GroupEvent> handler)
      Subscribes to all events.
      Parameters:
      handler - event handler
      Returns:
      subscription ID for unsubscribing
    • subscribe

      String subscribe(GroupEvent.Type type, Consumer<GroupEvent> handler)
      Subscribes to events of a specific type.
      Parameters:
      type - event type to subscribe to
      handler - event handler
      Returns:
      subscription ID
    • subscribe

      String subscribe(Predicate<GroupEvent> filter, Consumer<GroupEvent> handler)
      Subscribes to events matching a filter.
      Parameters:
      filter - event filter
      handler - event handler
      Returns:
      subscription ID
    • subscribeFor

      String subscribeFor(String agentId, Consumer<GroupEvent> handler)
      Subscribes to events targeted at a specific agent.
      Parameters:
      agentId - target agent ID
      handler - event handler
      Returns:
      subscription ID
    • subscribeFrom

      String subscribeFrom(String agentId, Consumer<GroupEvent> handler)
      Subscribes to events from a specific agent.
      Parameters:
      agentId - source agent ID
      handler - event handler
      Returns:
      subscription ID
    • unsubscribe

      boolean unsubscribe(String subscriptionId)
      Unsubscribes using subscription ID.
      Parameters:
      subscriptionId - subscription ID returned from subscribe
      Returns:
      true if unsubscribed
    • unsubscribeAll

      int unsubscribeAll(String agentId)
      Unsubscribes all subscriptions for an agent.
      Parameters:
      agentId - agent ID
      Returns:
      number of subscriptions removed
    • getRecentEvents

      List<GroupEvent> getRecentEvents(int limit)
      Gets recent events.
      Parameters:
      limit - maximum number of events
      Returns:
      recent events
    • getRecentEvents

      List<GroupEvent> getRecentEvents(GroupEvent.Type type, int limit)
      Gets recent events of a specific type.
      Parameters:
      type - event type
      limit - maximum number of events
      Returns:
      matching events
    • getSubscriptionCount

      int getSubscriptionCount()
      Returns count of active subscriptions.
      Returns:
      subscription count
    • start

      void start()
      Starts the event bus.
    • stop

      void stop()
      Stops the event bus.
    • isRunning

      boolean isRunning()
      Checks if event bus is running.
      Returns:
      true if running
    • clear

      void clear()
      Clears all subscriptions and event history.