Documentation
¶
Overview ¶
Package pubsub provides development-only in-memory publish/subscribe plus Redis and RabbitMQ adapters. Consumers must document delivery semantics, idempotency, retry, dead-letter, and shutdown behavior.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrRabbitMQNotConfigured = errors.New("pubsub: RabbitMQ provider is not configured")
ErrRabbitMQNotConfigured indicates an uninitialized RabbitMQ bus.
var ErrRedisNotConfigured = errors.New("pubsub: Redis provider is not configured")
ErrRedisNotConfigured indicates an uninitialized Redis bus.
Functions ¶
This section is empty.
Types ¶
type Bus ¶
type Bus struct {
// contains filtered or unexported fields
}
Bus represents an in-memory or Redis event message bus.
type RabbitMQBus ¶
type RabbitMQBus struct {
// contains filtered or unexported fields
}
RabbitMQBus publishes confirmed persistent messages and consumes durable queues.
func NewRabbitMQBus ¶
func NewRabbitMQBus(ctx context.Context, config RabbitMQConfig) (*RabbitMQBus, error)
NewRabbitMQBus connects, verifies, and configures a RabbitMQ publisher.
func (*RabbitMQBus) Close ¶
func (bus *RabbitMQBus) Close() error
Close releases the publish channel and connection once.
func (*RabbitMQBus) Publish ¶
func (bus *RabbitMQBus) Publish( ctx context.Context, exchange, routingKey string, payload []byte, ) error
Publish sends a bounded persistent message and waits for broker confirmation.
func (*RabbitMQBus) Subscribe ¶
func (bus *RabbitMQBus) Subscribe( ctx context.Context, queueName, bindingKey string, handler func(context.Context, []byte) error, ) error
Subscribe declares a durable queue and blocks until ctx cancellation or an AMQP/handler error. Failed handler messages are negatively acknowledged and requeued.
type RabbitMQConfig ¶
type RabbitMQConfig struct {
URL string
Exchange string
ExchangeType string
TLS *tls.Config
ConnectionTimeout time.Duration
ConfirmTimeout time.Duration
Heartbeat time.Duration
MaxPayloadBytes int
Prefetch int
QuorumQueues bool
}
RabbitMQConfig defines connection, exchange, delivery, and capacity policy.
type RedisBus ¶
type RedisBus struct {
// contains filtered or unexported fields
}
RedisBus provides at-most-once distributed notifications. Use the durable Kafka or RabbitMQ adapters when messages must survive subscriber downtime.
func NewRedisBus ¶
func NewRedisBus(ctx context.Context, config RedisConfig) (*RedisBus, error)
NewRedisBus creates and verifies an owned Redis connection.
func NewRedisBusFromClient ¶
func NewRedisBusFromClient( ctx context.Context, client redis.UniversalClient, config RedisConfig, ) (*RedisBus, error)
NewRedisBusFromClient verifies and wraps an application-owned Redis client.