github.com/zly-app/zapp@v1.3.3/component/msgbus/readme.md (about)

     1  
     2  # 消息总线组件
     3  
     4  > 类似于发布订阅
     5  
     6  ## 示例
     7  
     8  ```go
     9  package main
    10  
    11  import (
    12  	"sync"
    13  
    14  	"github.com/zly-app/zapp"
    15  	"github.com/zly-app/zapp/core"
    16  	"go.uber.org/zap"
    17  )
    18  
    19  func main() {
    20  	app := zapp.NewApp("app1")
    21  	defer app.Exit()
    22  
    23  	c := app.GetComponent()
    24  
    25  	var wg sync.WaitGroup
    26  	wg.Add(4)
    27  
    28  	// 订阅
    29  	c.Subscribe("topic1", 1, func(ctx core.IMsgbusContext) error {
    30  		c.Info("Subscribe.topic1", zap.Any("msg", ctx.Msg()))
    31  		wg.Done()
    32  		return nil
    33  	})
    34  	// 订阅
    35  	c.Subscribe("topic2", 1, func(ctx core.IMsgbusContext) error {
    36  		c.Info("Subscribe.topic2", zap.Any("msg", ctx.Msg()))
    37  		wg.Done()
    38  		return nil
    39  	})
    40  	// 订阅
    41  	c.SubscribeGlobal(1, func(ctx core.IMsgbusContext) error {
    42  		c.Info("SubscribeGlobal", zap.Any("msg", ctx.Msg()))
    43  		wg.Done()
    44  		return nil
    45  	})
    46  
    47  	c.Publish("topic1", 1)
    48  	c.Publish("topic2", 2)
    49  
    50  	wg.Wait()
    51  }
    52  ```
    53  
    54  ## 说明
    55  
    56  + 创建订阅者会自动创建主题
    57  + 发布消息时, 如果没有对应的订阅者, 则会被抛弃掉
    58  + 订阅者不能收到历史消息.