mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package pubsub
|
||
|
||
import (
|
||
"testing"
|
||
)
|
||
|
||
const (
|
||
Invalid TopicType = iota
|
||
Topic1
|
||
Topic2
|
||
)
|
||
|
||
var test *testing.T
|
||
|
||
type Subscriber1 struct {
|
||
BaseSubscriber
|
||
}
|
||
|
||
type Subscriber2 struct {
|
||
BaseSubscriber
|
||
}
|
||
|
||
func (sub *Subscriber1) OnEvent(ctx ...any) {
|
||
test.Log("Subscriber1 OnEvent", " key ", sub.GetKey(), ctx)
|
||
}
|
||
|
||
func (sub *Subscriber2) OnEvent(ctx ...any) {
|
||
test.Log("Subscriber2 OnEvent", " key ", sub.GetKey(), ctx)
|
||
}
|
||
|
||
func TestPubSub(t *testing.T) {
|
||
test = t
|
||
var publisher Publisher
|
||
|
||
// 创建3个订阅者
|
||
var subscriber []ISubscriber
|
||
subscriber = append(subscriber, &Subscriber1{}, &Subscriber1{}, &Subscriber2{})
|
||
|
||
// 分别注册进Publisher中
|
||
publisher.Subscribe(Topic1, subscriber[0])
|
||
publisher.Subscribe(Topic1, subscriber[1])
|
||
publisher.Subscribe(Topic2, subscriber[2])
|
||
|
||
// 发布订阅,两个Subscriber1都会调用OnEvent
|
||
publisher.Publish(Topic1, 1, 2, 3)
|
||
|
||
// 删除订阅,Publish后,只有Subscriber1的key2收到
|
||
publisher.UnSubscribeKey(subscriber[0].GetKey())
|
||
publisher.Publish(Topic1, 1, 2, 3)
|
||
|
||
// 删除Topic2,Publish将收不到
|
||
publisher.UnSubscribe(Topic2)
|
||
publisher.Publish(Topic2, 1)
|
||
}
|