package room import "context" // EventHandler 是 room outbox 事件进入 activity-service 后的处理边界。 // 消费来源可以是 MySQL outbox、Redis Stream 或 MQ,但处理侧必须保持幂等。 type EventHandler interface { HandleRoomEvent(ctx context.Context, eventID string, eventType string, payload []byte) error } // Consumer 描述活动服务的房间事件消费骨架。 type Consumer struct { handler EventHandler } // NewConsumer 创建房间事件消费者。 func NewConsumer(handler EventHandler) *Consumer { return &Consumer{handler: handler} } // Handle 把外部事件交给幂等 handler。 func (c *Consumer) Handle(ctx context.Context, eventID string, eventType string, payload []byte) error { if c == nil || c.handler == nil { return nil } return c.handler.HandleRoomEvent(ctx, eventID, eventType, payload) }