//发送消息 func (self *KiteClientManager) SendMessage(msg *protocol.QMessage) error { c, err := self.selectKiteClient(msg.GetHeader()) if nil != err { return err } return c.sendMessage(msg) }
//发送事务消息 func (self *KiteClientManager) SendTxMessage(msg *protocol.QMessage, doTranscation DoTranscation) (err error) { //路由选择策略 c, err := self.selectKiteClient(msg.GetHeader()) if nil != err { return err } //先发送消息 err = c.sendMessage(msg) if nil != err { return err } //执行本地事务返回succ为成功则提交、其余条件包括错误、失败都属于回滚 feedback := "" succ := false txstatus := protocol.TX_UNKNOWN //执行本地事务 succ, err = doTranscation(msg) if nil == err && succ { txstatus = protocol.TX_COMMIT } else { txstatus = protocol.TX_ROLLBACK if nil != err { feedback = err.Error() } } //发送txack到服务端 c.sendTxAck(msg, txstatus, feedback) return err }