1234567891011121314151617181920212223242526272829303132333435 |
- package queue
- import "git.i2edu.net/i2/go-zero/core/errorx"
- // A MultiPusher is a pusher that can push messages to multiple underlying pushers.
- type MultiPusher struct {
- name string
- pushers []Pusher
- }
- // NewMultiPusher returns a MultiPusher.
- func NewMultiPusher(pushers []Pusher) Pusher {
- return &MultiPusher{
- name: generateName(pushers),
- pushers: pushers,
- }
- }
- // Name returns the name of pusher.
- func (pusher *MultiPusher) Name() string {
- return pusher.name
- }
- // Push pushes a message into the underlying queue.
- func (pusher *MultiPusher) Push(message string) error {
- var batchError errorx.BatchError
- for _, each := range pusher.pushers {
- if err := each.Push(message); err != nil {
- batchError.Add(err)
- }
- }
- return batchError.Err()
- }
|