25 lines
619 B
Go
25 lines
619 B
Go
package outbox
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
var ErrTestSinkForbidden = errors.New("production 模式禁止启用测试接收器")
|
|
|
|
type Sink interface{ Deliver(Message) error }
|
|
|
|
type TestSink struct{ Delivered []string }
|
|
|
|
func (s *TestSink) Deliver(message Message) error {
|
|
s.Delivered = append(s.Delivered, message.IdempotencyKey)
|
|
return nil
|
|
}
|
|
|
|
func NewTestSink(applicationMode string) (*TestSink, error) {
|
|
if strings.EqualFold(strings.TrimSpace(applicationMode), "prod") || strings.EqualFold(strings.TrimSpace(applicationMode), "production") {
|
|
return nil, ErrTestSinkForbidden
|
|
}
|
|
return &TestSink{}, nil
|
|
}
|