Files
mayfly-go/server/pkg/eventbus/eventbus_test.go

45 lines
1.1 KiB
Go

package eventbus
import (
"context"
"errors"
"fmt"
"testing"
"time"
)
func TestSubscribe(t *testing.T) {
bus := New()
bus.SubscribeAsync("topic", "sub5", func(ctx context.Context, event *Event) error {
time.Sleep(5 * time.Second)
fmt.Printf("%s -> %s -> %d\n", "sub5", event.Topic, event.Val)
return nil
}, true)
bus.SubscribeOnce("topic", "sub1", func(ctx context.Context, event *Event) error {
fmt.Printf("%s -> %s -> %d\n", "sub1", event.Topic, event.Val)
return nil
})
bus.Subscribe("topic", "sub2", func(ctx context.Context, event *Event) error {
time.Sleep(5 * time.Second)
return errors.New("失败。。。。")
})
bus.SubscribeAsync("topic", "sub3", func(ctx context.Context, event *Event) error {
fmt.Printf("%s -> %s -> %d\n", "sub3", event.Topic, event.Val)
return nil
}, false)
bus.SubscribeAsync("topic", "sub4", func(ctx context.Context, event *Event) error {
time.Sleep(5 * time.Second)
fmt.Printf("%s -> %s -> %d\n", "sub4", event.Topic, event.Val)
return nil
}, false)
bus.Publish(context.Background(), "topic", 10)
bus.Publish(context.Background(), "topic", 20)
bus.WaitAsync()
}