func (self *KiteQServer) Start() { self.remotingServer = server.NewRemotionServer(self.kc.server, self.kc.rc, func(rclient *client.RemotingClient, p *packet.Packet) { event := pipe.NewPacketEvent(rclient, p) err := self.pipeline.FireWork(event) if nil != err { log.Error("RemotingServer|onPacketRecieve|FAIL|%s|%t\n", err, p) } else { // log.Debug("RemotingServer|onPacketRecieve|SUCC|%s|%t\n", rclient.RemoteAddr(), packet) } }) err := self.remotingServer.ListenAndServer() if nil != err { log.Crashf("KiteQServer|RemotionServer|START|FAIL|%s|%s\n", err, self.kc.server) } else { log.Info("KiteQServer|RemotionServer|START|SUCC|%s\n", self.kc.server) } //推送可发送的topic列表并且获取了对应topic下的订阅关系 succ := self.exchanger.PushQServer(self.kc.server, self.kc.topics) if !succ { log.Crashf("KiteQServer|PushQServer|FAIL|%s|%s\n", err, self.kc.topics) } else { log.Info("KiteQServer|PushQServer|SUCC|%s\n", self.kc.topics) } //开启流量统计 self.kc.flowstat.Start() //开启recover self.recoverManager.Start() }
func (self *KiteQServer) Start() { self.remotingServer = server.NewRemotionServer(self.kc.so.bindHost, self.kc.rc, func(rclient *client.RemotingClient, p *packet.Packet) { event := pipe.NewPacketEvent(rclient, p) err := self.pipeline.FireWork(event) if nil != err { log.ErrorLog("kite_server", "RemotingServer|onPacketRecieve|FAIL|%s|%t", err, packet.MarshalPacket(p)) } else { // log.Debug("RemotingServer|onPacketRecieve|SUCC|%s|%t\n", rclient.RemoteAddr(), packet) } }) err := self.remotingServer.ListenAndServer() if nil != err { log.Crashf("KiteQServer|RemotionServer|START|FAIL|%s|%s\n", err, self.kc.so.bindHost) } else { log.InfoLog("kite_server", "KiteQServer|RemotionServer|START|SUCC|%s\n", self.kc.so.bindHost) } //推送可发送的topic列表并且获取了对应topic下的订阅关系 succ := self.exchanger.PushQServer(self.kc.so.bindHost, self.kc.so.topics) if !succ { log.Crashf("KiteQServer|PushQServer|FAIL|%s|%s\n", err, self.kc.so.topics) } else { log.InfoLog("kite_server", "KiteQServer|PushQServer|SUCC|%s\n", self.kc.so.topics) } //开启流量统计 self.startFlow() //开启recover self.recoverManager.Start() //启动DLQ的时间 self.startDLQ() //检查配置更新 if len(self.kc.so.configPath) > 0 { self.startCheckConf() } //启动pprof host, _, _ := net.SplitHostPort(self.kc.so.bindHost) go func() { if self.kc.so.pprofPort > 0 { http.HandleFunc("/stat", self.HandleStat) http.HandleFunc("/binds", self.HandleBindings) log.Error(http.ListenAndServe(host+":"+strconv.Itoa(self.kc.so.pprofPort), nil)) } }() }
func main() { go func() { http.ListenAndServe(":13800", nil) }() rc := turbo.NewRemotingConfig( "turbo-server:localhost:28888", 1000, 16*1024, 16*1024, 20000, 20000, 10*time.Second, 160000) remoteServer := server.NewRemotionServer("localhost:28888", rc, packetDispatcher) remoteServer.ListenAndServer() select {} }