1 Star 3 Fork 0

tym_hmm / route-rabbitmq-client

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
DataCenterClient.go 4.69 KB
一键复制 编辑 原始数据 按行查看 历史
天蝎儿 提交于 2022-04-14 14:53 . 增加客户端支持虚拟机
package DataCenterClient
import (
"fmt"
RabbitmqRoute "gitee.com/tym_hmm/rabbitmq-pool-router-path-go"
"gitee.com/tym_hmm/route-rabbitmq-client/Conf"
Time "gitee.com/tym_hmm/route-rabbitmq-client/helper"
"strings"
)
const (
//交换机 或 交换机类型 或 队列为空
CODE_CLIENT_EXCHANGE_QUEUE_ERROR = 70100
//转换json失败
CODE_CLIENT_DATA_ENCODE_ERROR = 70101
//媒体类型错误
CODE_CLIENT_TERMINAL_TYPE_ERROR = 70102
)
/**
数据中心客户端
*/
type dataCenterClient struct {
exchangeName string
exchangeType string
queueName string
routeKey string
virtualHosts string
terminalType Conf.TERMINAL_TYPE //客户端类型
baseClient *BaseClient
}
func NewDataCenterClient(host string, port int, usr string, pwd string) DataCenterApi {
return &dataCenterClient{baseClient: &BaseClient{
Host: host,
Port: port,
User: usr,
Pwd: pwd,
}}
}
/**
设置交换机等信息
*/
func (d *dataCenterClient) SetExchange(exchangeName, exChangeType, queueName, routeKey string) {
d.exchangeName = exchangeName
d.exchangeType = exChangeType
d.queueName = queueName
d.routeKey = routeKey
}
func (d *dataCenterClient) SetVirtualHosts(virtualHosts string) {
d.virtualHosts = virtualHosts
}
/**
设置终端
*/
func (d *dataCenterClient) SetTerminalType(terminalType Conf.TERMINAL_TYPE) {
d.terminalType = terminalType
}
/**
数据发送
@param terminalType TERMINAL_TYPE 终端类型
@param routePath string 路由
@param devices DeviceData 设备信息
@param requestData RequestData 数据请求
*/
func (d *dataCenterClient) send(terminalType Conf.TERMINAL_TYPE, routePath string, devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
if !Conf.Check(terminalType) {
return &RabbitmqRoute.RabbitMqTaskError{
Code: CODE_CLIENT_TERMINAL_TYPE_ERROR,
Message: "terminal type error, see Config TERMINAL_TYPE",
}
}
requestData.SdkType = int(terminalType)
requestData.ReportTime = Time.GetNowTimeStr()
json, err := NewRequestData(devices, requestData).EncoderJson()
if err != nil {
return &RabbitmqRoute.RabbitMqTaskError{Code: CODE_CLIENT_DATA_ENCODE_ERROR, Message: err.Error()}
}
if len(strings.TrimSpace(d.exchangeName)) == 0 || len(strings.TrimSpace(d.exchangeType)) == 0 || len(strings.TrimSpace(d.queueName)) == 0 {
return &RabbitmqRoute.RabbitMqTaskError{
Code: CODE_CLIENT_EXCHANGE_QUEUE_ERROR,
Message: "exchangeName, exchangeType, queueName can not be empty",
}
}
if len(strings.TrimSpace(d.virtualHosts)) > 0 {
fmt.Printf("%+v \n", d)
d.baseClient.VirtualHosts = d.virtualHosts
return d.baseClient.GetClientVirtualHosts().Publish(d.exchangeName, d.exchangeType, d.queueName, d.routeKey, routePath, json)
} else {
return d.baseClient.GetClient().Publish(d.exchangeName, d.exchangeType, d.queueName, d.routeKey, routePath, json)
}
}
func (d *dataCenterClient) ReportRequest(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/request", devices, requestData)
}
func (d *dataCenterClient) ReportExpose(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/expose", devices, requestData)
}
func (d *dataCenterClient) ReportClick(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/click", devices, requestData)
}
func (d *dataCenterClient) ReportClose(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/close", devices, requestData)
}
func (d *dataCenterClient) ReportReward(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/reward", devices, requestData)
}
func (d *dataCenterClient) ReportError(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/error", devices, requestData)
}
func (d *dataCenterClient) ReportWake(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/awake", devices, requestData)
}
func (d *dataCenterClient) ReportWakeError(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
return d.send(d.terminalType, "/awake_error", devices, requestData)
}
//func (d *dataCenterClient) ReportThirdRequest(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
// return d.send(d.terminalType,"/third_request", devices, requestData)
//}
//
//func (d *dataCenterClient) ReportThirdComplete(devices *DeviceData, requestData *RequestData) *RabbitmqRoute.RabbitMqTaskError {
// return d.send(d.terminalType,"/third_complete", devices, requestData)
//}
Go
1
https://gitee.com/tym_hmm/route-rabbitmq-client.git
git@gitee.com:tym_hmm/route-rabbitmq-client.git
tym_hmm
route-rabbitmq-client
route-rabbitmq-client
master

搜索帮助