Class PostgresConversationSignalBus

java.lang.Object
at.aimon.session.postgres.PostgresConversationSignalBus
All Implemented Interfaces:
at.aimon.session.web.spi.ConversationSignalBus, AutoCloseable

public final class PostgresConversationSignalBus extends Object implements at.aimon.session.web.spi.ConversationSignalBus, AutoCloseable
Postgres-backed ConversationSignalBus per design §4.2.

Hybrid model:

Connection topology (design §6):

  • publishDataSource — Hikari main pool (short transactions for INSERT + NOTIFY).
  • fetchDataSource — Hikari signal pool (recommended min=1, max=2); used by the dispatcher.
  • The dispatcher's LISTEN connection — opened directly via DriverManager, outside Hikari.

dropSelfBroadcast (default true) skips delivery when a signal's originNodeId equals this bus's nodeId, matching the §5.3 fan-out diagram.

  • Constructor Details

    • PostgresConversationSignalBus

      public PostgresConversationSignalBus(DataSource publishDataSource, DataSource fetchDataSource, String jdbcUrl, Properties listenConnectionProps, String nodeId)
    • PostgresConversationSignalBus

      public PostgresConversationSignalBus(DataSource publishDataSource, DataSource fetchDataSource, String jdbcUrl, Properties listenConnectionProps, String nodeId, com.fasterxml.jackson.databind.ObjectMapper mapper, boolean dropSelfBroadcast)
  • Method Details

    • subscribe

      public at.aimon.session.web.spi.ConversationSignalBus.Subscription subscribe(at.aimon.core.agent.conversation.ConversationId id, Consumer<at.aimon.session.web.spi.ConversationSignal> handler)
      Specified by:
      subscribe in interface at.aimon.session.web.spi.ConversationSignalBus
    • publish

      public void publish(at.aimon.session.web.spi.ConversationSignal signal)
      Specified by:
      publish in interface at.aimon.session.web.spi.ConversationSignalBus
    • sweepOlderThan

      public int sweepOlderThan(Instant cutoff)
      Reaps conversation_signal rows older than cutoff. Called by the manager's scheduled cleanup (design §4.2).
      Parameters:
      cutoff - rows with created_at < cutoff are deleted
      Returns:
      number of rows deleted
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable