Browse Source

rabbitmq组件合入

zwl 5 years ago
parent
commit
501b98aa6d
10 changed files with 709 additions and 1 deletions
  1. 73 0
      algorithm/listtest.go
  2. 401 0
      busdriver/busdriver.go
  3. 80 0
      busdriver/testbus.go
  4. 25 1
      config/config.go
  5. 5 0
      config/config.xml
  6. 1 0
      go.mod
  7. 2 0
      go.sum
  8. 3 0
      log/mtp2_if/mtp2_if_2020-06-04.log
  9. 105 0
      log/mtp2_if/mtp2_if_2020-06-05.log
  10. 14 0
      main.go

+ 73 - 0
algorithm/listtest.go

@@ -0,0 +1,73 @@
+package algorithm
+
+import "fmt"
+
+type Node struct {
+	value int
+	next  *Node
+}
+
+var head *Node = nil
+
+func InitList(val int) {
+	var cur *Node = nil
+	var i int
+	for i = 1; i <= val; i++ {
+		node := new(Node)
+		node.value = i
+		node.next = nil
+
+		if head == nil {
+			head = node
+			cur = node
+		} else {
+			cur.next = node
+			cur = node
+		}
+	}
+}
+
+func PrintList() {
+	// 打印链表
+	fmt.Print("list:")
+	node := head
+	for {
+		fmt.Printf("%d ", node.value)
+		if node.next == nil {
+			break
+		}
+		node = node.next
+	}
+	fmt.Println()
+}
+
+func ReverseList() {
+	var header *Node
+	var next *Node
+	var pre *Node
+
+	header = head
+	next = nil
+	pre = nil
+
+	// 翻转列表
+	for {
+		if header == nil {
+			break
+		}
+
+		next = header.next
+		header.next = pre
+		pre = header
+		header = next
+	}
+
+	head = pre
+}
+
+func Test(size int) {
+	InitList(size)
+	PrintList()
+	ReverseList()
+	PrintList()
+}

+ 401 - 0
busdriver/busdriver.go

@@ -0,0 +1,401 @@
+package busdriver
+
+import (
+	"bytes"
+	"errors"
+	"fmt"
+	"mtp2_if/config"
+	"time"
+
+	"github.com/streadway/amqp"
+)
+
+// SubscribeInfo 订阅信息结构
+type SubscribeInfo struct {
+	Topic     string
+	QueueName string
+}
+
+// MsgProcesser 消息处理者接口定义
+type MsgProcesser interface {
+	process(string, string, *string)
+}
+
+// MqConn 连接指针
+var MqConn *amqp.Connection
+
+// MqChannel channel指针
+var MqChannel *amqp.Channel
+
+// SerName 服务名称用与创建队列
+var SerName string = "mtp2_if"
+
+// SubInfos 订阅信息数组
+var SubInfos []SubscribeInfo
+
+// TestProc 消息处理对象
+type TestProc struct {
+	msgContent string
+}
+
+// 消息处理接口
+func (t *TestProc) process(topic string, queuename string, msg *string) {
+	info := fmt.Sprintf("Receive message from: time[%s] topic[%s] queue[%s] content[%s]",
+		time.Now().Format("2006-01-02 15:04:05"),
+		topic,
+		queuename,
+		*msg)
+	fmt.Println(info)
+}
+
+// MqConnect 连接到rabbitMQ
+func MqConnect() error {
+	url := config.SerCfg.MqCfg.Url
+	var err error
+	if MqChannel == nil {
+		MqConn, err = amqp.Dial(url)
+		if err != nil {
+			fmt.Printf("rabbitmq connect failed:%s\n", err)
+			return err
+		}
+
+		MqChannel, err = MqConn.Channel()
+		if err != nil {
+			fmt.Printf("rabbitmq channel open failed:%s\n", err)
+			return err
+		}
+	}
+	return nil
+}
+
+// MqClose 断开rabbitMQ连接
+func MqClose() {
+	MqChannel.Close()
+	MqConn.Close()
+}
+
+// MqExchange 创建交换
+func MqExchange() error {
+	if MqChannel == nil {
+		return errors.New("rabbitMQ is not init")
+	}
+
+	err := MqChannel.ExchangeDeclarePassive("entry", "topic", false, false, false, true, nil)
+	if err != nil {
+		// 注册交换机
+		err = MqChannel.ExchangeDeclare("entry", "topic", false, false, false, true, nil)
+		if err != nil {
+			fmt.Printf("declear exchange failed:%s \n", err)
+			return err
+		}
+	}
+
+	return nil
+}
+
+// MqTest 测试rabbitMQ
+func MqStart() {
+	msg := "test message"
+	t := &TestProc{
+		msgContent: msg,
+	}
+
+	// 遍历所有订阅的主题,启动接收协程
+	for _, subinfo := range SubInfos {
+		Receive(subinfo.Topic, subinfo.QueueName, t)
+	}
+}
+
+// SubscribeTopic 订阅主题
+func SubscribeTopic(topic string) error {
+	// 创建队列名称
+	queuename := fmt.Sprintf("%s_%s", SerName, topic)
+
+	// 判断连接
+	var err error
+	if MqChannel == nil {
+		err = MqConnect()
+		if err != nil {
+			return err
+		}
+	}
+
+	// 申明队列
+	//_, err = MqChannel.QueueDeclarePassive(queuename, true, false, false, true, nil)
+	//if err != nil {
+	_, err = MqChannel.QueueDeclare(queuename, true, false, false, true, nil)
+	if err != nil {
+		fmt.Printf("declear queue failed:%s \n", err)
+		return err
+	}
+	//}
+
+	// 绑定队列
+	err = MqChannel.QueueBind(queuename, topic, "entry", false, nil)
+	if err != nil {
+		fmt.Printf("bind queue failed:%s \n", err)
+		return err
+	}
+
+	// 添加订阅信息
+	subinfo := SubscribeInfo{
+		Topic:     topic,
+		QueueName: queuename,
+	}
+	SubInfos = append(SubInfos, subinfo)
+
+	return nil
+}
+
+// Publish 发送消息
+func Publish(topic, msg string) error {
+	err := MqChannel.Publish("entry", topic, false, false, amqp.Publishing{
+		ContentType: "text/plain",
+		Body:        []byte(msg),
+	})
+	if err != nil {
+		fmt.Printf("publish failed:%s \n", err)
+		return err
+	}
+	return nil
+}
+
+// Receive 接收消息
+func Receive(topic, queuename string, processer MsgProcesser) error {
+	var err error
+	if MqChannel == nil {
+		err = MqConnect()
+		if err != nil {
+			return err
+		}
+	}
+
+	msgList, err := MqChannel.Consume(queuename, "", false, false, false, false, nil)
+	if err != nil {
+		fmt.Printf("get receive channel failed:%s \n", err)
+		return err
+	}
+
+	go func() {
+		for msg := range msgList {
+			msgstr := bytesToString(&(msg.Body))
+			processer.process(topic, queuename, msgstr)
+			msg.Ack(false)
+		}
+	}()
+
+	return nil
+}
+
+func bytesToString(b *[]byte) *string {
+	s := bytes.NewBuffer(*b)
+	r := s.String()
+	return &r
+}
+
+/*
+
+// 定义生产者接口
+type Producer interface {
+	MsgContent() string
+}
+
+// 定义消费者接口
+type Receiver interface {
+	Consumer([]byte) error
+}
+
+// 定义队列交换机对象
+type QueueExchange struct {
+	QueName string // 队列名称
+	RtKey   string // 路由key
+	ExName  string // 交换机名称
+	ExType  string // 交换机类型
+}
+
+// 定义RabbitMQ对象
+type RabbitMQ struct {
+	connection   *amqp.Connection
+	channel      *amqp.Channel
+	queueName    string
+	routintKey   string
+	exchangeName string
+	exchangeType string
+	producerList []Producer
+	receiverList []Receiver
+	mutex        sync.Mutex
+}
+
+// 打开rabbitmq链接
+func (r *RabbitMQ) mqConnect() {
+	url := "amqp://guest:guest@192.168.31.136:5020/test"
+
+	var err error
+	mqConn, err = amqp.Dial(url)
+	if err != nil {
+		fmt.Printf("rabbitmq connect failed:%s\n", err)
+		return
+	}
+	r.connection = mqConn
+
+	mqChannel, err = mqConn.Channel()
+	if err != nil {
+		fmt.Printf("rabbitmq channel open failed:%s\n", err)
+		return
+	}
+	r.channel = mqChannel
+}
+
+// 关闭rabbitmq链接
+func (r *RabbitMQ) mqClose() {
+	err := r.channel.Close()
+	if err != nil {
+		fmt.Printf("rabbitmq channel close failed:%s\n", err)
+		return
+	}
+
+	err = r.connection.Close()
+	if err != nil {
+		fmt.Printf("rabbitmq disconnect failed:%s\n", err)
+		return
+	}
+}
+
+// 创建一个队列交换机对象
+func New(q *QueueExchange) *RabbitMQ {
+	return &RabbitMQ{
+		queueName:    q.QueName,
+		routintKey:   q.RtKey,
+		exchangeName: q.ExName,
+		exchangeType: q.ExType,
+	}
+}
+
+// 注册发送指定队列指定路由的生产者
+func (r *RabbitMQ) RegiestrProducer(producer Producer) {
+	r.producerList = append(r.producerList, producer)
+}
+
+// 发送任务
+func (r *RabbitMQ) listenProducer(producer Producer) {
+	// 验证链接是否正常,否则重连
+	if r.channel == nil {
+		r.mqConnect()
+	}
+
+	// 检查队列是否存在
+	_, err := r.channel.QueueDeclarePassive(r.queueName, true, false, false, true, nil)
+	if err != nil {
+		// 队列不存在,声明队列
+		_, err = r.channel.QueueDeclare(r.queueName, true, false, false, true, nil)
+		if err != nil {
+			fmt.Printf("declear queue failed:%s \n", err)
+			return
+		}
+	}
+
+	// 队列绑定
+	err = r.channel.QueueBind(r.queueName, r.routintKey, r.exchangeName, true, nil)
+	if err != nil {
+		fmt.Printf("bind queue failed:%s \n", err)
+		return
+	}
+
+	// 检查交换机是否存在
+	err = r.channel.ExchangeDeclarePassive(r.exchangeName, r.exchangeType, true, false, false, true, nil)
+	if err != nil {
+		// 注册交换机
+		err = r.channel.ExchangeDeclare(r.exchangeName, r.exchangeType, true, false, false, true, nil)
+		if err != nil {
+			fmt.Printf("declear exchange failed:%s \n", err)
+			return
+		}
+	}
+
+	// 发送任务消息
+	err = r.channel.Publish(r.exchangeName, r.exchangeType, false, false, amqp.Publishing{
+		ContentType: "test/plain",
+		Body:        []byte(producer.MsgContent()),
+	})
+	if err != nil {
+		fmt.Printf("send message failed:%s \n", err)
+		return
+	}
+}
+
+// 注册接收指定队列指定路由的接收者
+func (r *RabbitMQ) RegiesterReceiver(receiver Receiver) {
+	r.mutex.Lock()
+	r.receiverList = append(r.receiverList, receiver)
+	r.mutex.Unlock()
+}
+
+// 监听接收者接收任务
+func (r *RabbitMQ) listenReceiver(receiver Receiver) {
+	// 结束后关闭链接
+	defer r.mqClose()
+
+	// 验证链接是否正常
+	if r.channel == nil {
+		r.mqConnect()
+	}
+
+	// 检查队列是否存在
+	_, err := r.channel.QueueDeclarePassive(r.queueName, true, false, false, true, nil)
+	if err != nil {
+		// 队列不存在,声明队列
+		_, err = r.channel.QueueDeclare(r.queueName, true, false, false, true, nil)
+		if err != nil {
+			fmt.Printf("declear queue failed:%s \n", err)
+			return
+		}
+	}
+
+	// 队列绑定
+	err = r.channel.QueueBind(r.queueName, r.routintKey, r.exchangeName, true, nil)
+	if err != nil {
+		fmt.Printf("bind queue failed:%s \n", err)
+		return
+	}
+
+	// 获取消费通道
+	err = r.channel.Qos(1, 0, true)
+	msgList, err := r.channel.Consume(r.queueName, "", false, false, false, false, nil)
+	if err != nil {
+		fmt.Printf("get receive channel failed:%s \n", err)
+		return
+	}
+
+	for msg := range msgList {
+		err = receiver.Consumer(msg.Body)
+		if err != nil {
+			err = msg.Ack(true)
+			if err != nil {
+				fmt.Printf("ack message failed:%s \n", err)
+				return
+			}
+		} else {
+			err = msg.Ack(false)
+			if err != nil {
+				fmt.Printf("ack message failed:%s \n", err)
+				return
+			}
+			return
+		}
+	}
+}
+
+// 启动RabbitMQk客户端
+func (r *RabbitMQ) Start() {
+	// 开启监听生产者发送任务
+	for _, producer := range r.producerList {
+		go r.listenProducer(producer)
+	}
+	// 开启监听生产者发送任务
+	for _, receiver := range r.receiverList {
+		go r.listenReceiver(receiver)
+	}
+	time.Sleep(1 * time.Second)
+
+}
+*/

+ 80 - 0
busdriver/testbus.go

@@ -0,0 +1,80 @@
+package busdriver
+
+import (
+	"fmt"
+	"net/http"
+	"time"
+
+	"github.com/gin-gonic/gin"
+)
+
+// TestBus 测试接口
+func TestBus() {
+	MqConnect()
+	//defer closeMQ()
+	MqExchange()
+
+	// 订阅主题
+	err1 := SubscribeTopic("test1")
+	err2 := SubscribeTopic("test2")
+	err3 := SubscribeTopic("test3")
+	if err1 != nil || err2 != nil || err3 != nil {
+		fmt.Println("subscribe topic failed")
+		return
+	}
+
+	MqStart()
+
+	// 启动发送协程
+	go func() {
+		for {
+			for _, subinfo := range SubInfos {
+				Publish(subinfo.Topic, "test message")
+			}
+			time.Sleep(5 * time.Second)
+		}
+	}()
+}
+
+// SubTopicReq 主题订阅请求
+type SubTopicReq struct {
+	Topic string `json:"topic" binding:"required"`
+}
+
+// MsgPublishReq 消息发送请求
+type MsgPublishReq struct {
+	Topic   string `json:"topic" binding:"required"`
+	Content string `json:"content" binding:"required"`
+}
+
+// SubTopic 主题订阅
+func SubTopic(c *gin.Context) {
+	var subreq SubTopicReq
+	err := c.ShouldBind(&subreq)
+	if err != nil {
+		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+	}
+
+	err = SubscribeTopic(subreq.Topic)
+	if err != nil {
+		fmt.Println("subscribe topic failed:", err)
+	}
+
+	c.SecureJSON(http.StatusOK, 0)
+}
+
+// MsgPublish 消息发送
+func MsgPublish(c *gin.Context) {
+	var msgpublish MsgPublishReq
+	err := c.ShouldBind(&msgpublish)
+	if err != nil {
+		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+	}
+
+	err = Publish(msgpublish.Topic, msgpublish.Content)
+	if err != nil {
+		fmt.Println("publish topic failed", err)
+	}
+
+	c.SecureJSON(http.StatusOK, 0)
+}

+ 25 - 1
config/config.go

@@ -38,11 +38,17 @@ type RedisConfig struct {
 	Pwd     string
 }
 
+type MqConfig struct {
+	Url      string
+	Exchange string
+}
+
 type ServiceConfig struct {
 	WebCfg   WebConfig
 	LogCfg   LogConfig
 	DbCfg    DbConfig
 	RedisCfg RedisConfig
+	MqCfg    MqConfig
 }
 
 func (c *ServiceConfig) Init(path string) error {
@@ -211,6 +217,24 @@ func (c *ServiceConfig) Init(path string) error {
 		SerCfg.RedisCfg.Pwd = redis_pwd.SelectAttrValue("value", "")
 	}
 
+	// RabbitMQ配置
+	mqsettings := root.SelectElements("MqSetting")
+	for _, setting := range mqsettings {
+		// url
+		url := setting.SelectElement("Url")
+		if url == nil {
+			return errors.New("read rabbitmq url failed")
+		}
+		SerCfg.MqCfg.Url = url.SelectAttrValue("value", "")
+
+		// exchange
+		exchange := setting.SelectElement("Exchange")
+		if exchange == nil {
+			return errors.New("read rabbitmq exchange failed")
+		}
+		SerCfg.MqCfg.Exchange = exchange.SelectAttrValue("value", "entry")
+	}
+
 	return nil
 }
 
@@ -263,4 +287,4 @@ func (c *ServiceConfig) GetRedisConnNum() int {
 
 func (c *ServiceConfig) GetRedisTimeout() int {
 	return SerCfg.RedisCfg.TimeOut
-}
+}

+ 5 - 0
config/config.xml

@@ -28,4 +28,9 @@
         <DbNum     value="0"/>
         <Pwd       value=""/>
     </RedisSetting>
+
+    <MqSetting>
+        <Url       value="amqp://guest:guest@192.168.31.114:5020/test"/>
+        <Exchange  value="entry"/>
+    </MqSetting>
 </Configuration>

+ 1 - 0
go.mod

@@ -27,6 +27,7 @@ require (
 	github.com/pkg/errors v0.9.1 // indirect
 	github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5
 	github.com/sirupsen/logrus v1.4.2
+	github.com/streadway/amqp v0.0.0-20200108173154-1c71cc93ed71
 	github.com/syndtr/goleveldb v1.0.0 // indirect
 	github.com/tealeg/xlsx v1.0.5 // indirect
 	github.com/tebeka/strftime v0.1.3 // indirect

+ 2 - 0
go.sum

@@ -130,6 +130,8 @@ github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnH
 github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM=
 github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
+github.com/streadway/amqp v0.0.0-20200108173154-1c71cc93ed71 h1:2MR0pKUzlP3SGgj5NYJe/zRYDwOu9ku6YHy+Iw7l5DM=
+github.com/streadway/amqp v0.0.0-20200108173154-1c71cc93ed71/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=

+ 3 - 0
log/mtp2_if/mtp2_if_2020-06-04.log

@@ -0,0 +1,3 @@
+time="2020-06-04 17:37:33" level=debug msg="Shutdown service..." func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:134"
+time="2020-06-04 17:37:33" level=error msg="Start service failed[http: Server closed]." func=main.main.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:124"
+time="2020-06-04 17:37:33" level=debug msg="Service stopped" func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:147"

+ 105 - 0
log/mtp2_if/mtp2_if_2020-06-05.log

@@ -0,0 +1,105 @@
+time="2020-06-05 11:27:43" level=debug msg="Shutdown service..." func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:134"
+time="2020-06-05 11:27:43" level=error msg="Start service failed[http: Server closed]." func=main.main.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:124"
+time="2020-06-05 11:27:43" level=debug msg="Service stopped" func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:147"
+time="2020-06-05 12:10:09" level=debug msg="Shutdown service..." func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:134"
+time="2020-06-05 12:10:09" level=error msg="Start service failed[http: Server closed]." func=main.main.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:124"
+time="2020-06-05 12:10:09" level=debug msg="Service stopped" func=main.main file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:147"
+time="2020-06-05 15:46:15" level=info msg="|200|  81.286105ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:46:41" level=info msg="|200|  97.776915ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:47:34" level=info msg="|404|        771ns|            ::1|POST /bus/busopt/SMsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:48:01" level=info msg="|404|        737ns|            ::1|POST /bus/busopt/SMsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:48:19" level=info msg="|404|        790ns|            ::1|POST /bus/busopt/SMsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:48:32" level=info msg="|200|    298.407µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:49:05" level=info msg="|200|    284.827µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:50:29" level=info msg="|200|    210.452µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:51:49" level=info msg="|200| 5.153418708s|            ::1|POST /goods/goodsopt/GetAllGoods" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:52:17" level=info msg="|200|    552.361µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:52:58" level=info msg="|200|  75.766731ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:53:32" level=info msg="|200|    187.767µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:54:32" level=info msg="|200|      206.8µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:54:43" level=info msg="|200|    254.625µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:54:54" level=info msg="|200|    187.083µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:55:19" level=info msg="|200|    807.711µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:57:15" level=info msg="|200|    219.308µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:57:41" level=info msg="|200|    182.007µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:59:12" level=info msg="|200|    376.102µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 15:59:43" level=info msg="|200|    568.351µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:00:38" level=info msg="|200|     251.47µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:01:11" level=info msg="|200|   1.330674ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:01:16" level=info msg="|200|   1.032471ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:01:27" level=info msg="|200|   1.199197ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:01:46" level=info msg="|200|    223.833µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:01:53" level=info msg="|200|    146.176µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:02:02" level=info msg="|200|    152.343µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:02:09" level=info msg="|200|    160.242µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:03:32" level=info msg="|200|   1.007587ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:03:35" level=info msg="|200|    770.977µs|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:03:38" level=info msg="|200|   1.808109ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:03:52" level=info msg="|200|    698.583µs|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:04:02" level=info msg="|200|    226.692µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:04:07" level=info msg="|200|    241.531µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:04:10" level=info msg="|200|    187.229µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:11" level=info msg="|200|   1.918763ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:18" level=info msg="|200|    983.116µs|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:22" level=info msg="|200|    991.028µs|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:30" level=info msg="|200|    320.391µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:37" level=info msg="|200|    167.074µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:06:41" level=info msg="|200|    172.279µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:07:48" level=info msg="|200|   1.277762ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:07:52" level=info msg="|200|   3.297417ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:07:55" level=info msg="|200|   1.181534ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:02" level=info msg="|200|    258.164µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:04" level=info msg="|200|     282.11µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:05" level=info msg="|200|    199.894µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:09" level=info msg="|200|    205.854µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:11" level=info msg="|200|    211.936µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:12" level=info msg="|200|     178.76µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:12" level=info msg="|200|     329.66µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:13" level=info msg="|200|    149.778µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:17" level=info msg="|200|    182.572µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:18" level=info msg="|200|     261.88µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:18" level=info msg="|200|    187.272µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:19" level=info msg="|200|    284.993µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:22" level=info msg="|200|   1.150576ms|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:23" level=info msg="|200|    174.161µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:08:28" level=info msg="|200|    207.699µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:17" level=info msg="|200|    198.959µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:19" level=info msg="|200|    156.574µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:23" level=info msg="|200|    193.051µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:31" level=info msg="|200|    139.039µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:32" level=info msg="|200|     288.56µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:33" level=info msg="|200|    178.741µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:34" level=info msg="|200|    207.382µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:36" level=info msg="|200|    233.472µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:39" level=info msg="|200|    153.426µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:55" level=info msg="|200|    182.163µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:56" level=info msg="|200|      269.6µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:57" level=info msg="|200|    158.062µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:58" level=info msg="|200|    433.657µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:09:58" level=info msg="|200|    180.066µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:10:30" level=info msg="|200|    209.799µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:10:31" level=info msg="|200|    200.526µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:10:36" level=info msg="|200|    426.196µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:10:41" level=info msg="|200|    200.969µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:11:12" level=info msg="|200| 5.036108641s|            ::1|POST /goods/goodsopt/GetAllGoods" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:11:16" level=info msg="|200|    218.817µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:14:32" level=info msg="|200|   1.353051ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:14:36" level=info msg="|200|   1.222703ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:14:39" level=info msg="|200|   1.019808ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:14:52" level=info msg="|200|    273.346µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:15:05" level=info msg="|200|    182.549µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:15:16" level=info msg="|200|    176.806µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:13" level=info msg="|200|   1.621907ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:22" level=info msg="|200|   1.842767ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:27" level=info msg="|200|   1.089213ms|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:31" level=info msg="|200|    671.097µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:37" level=info msg="|200|    297.408µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:42" level=info msg="|200|    167.469µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:18:48" level=info msg="|200|    188.841µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:19:07" level=info msg="|200|    873.127µs|            ::1|POST /bus/busopt/SubTopic" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:19:15" level=info msg="|200|    225.689µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:20:02" level=info msg="|200|     220.01µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:35:30" level=info msg="|200|    443.472µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:35:34" level=info msg="|200|    187.245µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:35:42" level=info msg="|200|     298.17µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"
+time="2020-06-05 16:35:52" level=info msg="|200|     229.36µs|            ::1|POST /bus/busopt/MsgPublish" func=main.ginLoggerMiddleware.func1 file="/Users/wanghongliang/Repo/Muchinfo_Git/MTP20_IF/main.go:169"

+ 14 - 0
main.go

@@ -8,7 +8,9 @@ import (
 	"syscall"
 	"time"
 
+	//"mtp2_if/algorithm"
 	"mtp2_if/account"
+	"mtp2_if/busdriver"
 	"mtp2_if/config"
 	"mtp2_if/db"
 	"mtp2_if/goods"
@@ -23,6 +25,9 @@ import (
 )
 
 func main() {
+	// 测试
+	//algorithm.Test(10)
+
 	// 初始化配置
 	err := config.SerCfg.Init("config/config.xml")
 	if err != nil {
@@ -30,6 +35,9 @@ func main() {
 		return
 	}
 
+	// 测试rabbitMQ
+	busdriver.TestBus()
+
 	// 初始化日志组件
 	err = logger.Init(config.SerCfg.GetLogSetting())
 	if err != nil {
@@ -87,6 +95,12 @@ func main() {
 		aropt.POST("/GetAccount", account.GetAccount)
 		aropt.POST("/GetReckonAccount", account.GetReckonAccount)
 	}
+	bus := r.Group("/bus")
+	busopt := bus.Group("/busopt")
+	{
+		busopt.POST("/SubTopic", busdriver.SubTopic)
+		busopt.POST("/MsgPublish", busdriver.MsgPublish)
+	}
 
 	timeout := 15 * time.Second