first commit
This commit is contained in:
53
client.go
Normal file
53
client.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package queue
|
||||
|
||||
type Client struct {
|
||||
bro *Broker
|
||||
}
|
||||
|
||||
// 设置消息容量
|
||||
// @description 控制消息队列的大小
|
||||
func (c *Client) SetConditions(capacity int) {
|
||||
c.bro.setConditions(capacity)
|
||||
}
|
||||
|
||||
// 消息推送
|
||||
// @param topic 订阅的主题
|
||||
// @param msg 传递的消息
|
||||
func (c *Client) Publish(topic string, msg any) error {
|
||||
return c.bro.publish(topic, msg)
|
||||
}
|
||||
|
||||
// 消息订阅
|
||||
// @description 传入订阅的主题,即可完成订阅
|
||||
// @param topic 订阅的主题
|
||||
// @return sub 通道用来接收数据
|
||||
func (c *Client) Subscribe(topic string) (sub <-chan any, err error) {
|
||||
return c.bro.subscribe(topic)
|
||||
}
|
||||
|
||||
// 取消订阅
|
||||
// @param topic 订阅的主题
|
||||
// @param sub 消息订阅的通道
|
||||
func (c *Client) Unsubscribe(topic string, sub <-chan any) error {
|
||||
return c.bro.unsubscribe(topic, sub)
|
||||
}
|
||||
|
||||
// 关闭消息队列
|
||||
func (c *Client) Close() {
|
||||
c.bro.close()
|
||||
}
|
||||
|
||||
func (c *Client) GetPayload(sub <-chan any) any {
|
||||
for val := range sub {
|
||||
if val != nil {
|
||||
return val
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewClient() *Client {
|
||||
return &Client{
|
||||
bro: NewBroker(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user