23 lines
563 B
Go
23 lines
563 B
Go
package middleware
|
|
|
|
import (
|
|
"github.com/ThreeDotsLabs/watermill/message"
|
|
)
|
|
|
|
// Duplicator is processing messages twice, to ensure that the endpoint is idempotent.
|
|
func Duplicator(h message.HandlerFunc) message.HandlerFunc {
|
|
return func(msg *message.Message) ([]*message.Message, error) {
|
|
firstProducedMessages, firstErr := h(msg)
|
|
if firstErr != nil {
|
|
return nil, firstErr
|
|
}
|
|
|
|
secondProducedMessages, secondErr := h(msg)
|
|
if secondErr != nil {
|
|
return nil, secondErr
|
|
}
|
|
|
|
return append(firstProducedMessages, secondProducedMessages...), nil
|
|
}
|
|
}
|