Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package ensureSendUtil
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"goutil/webUtil"
|
||||
)
|
||||
|
||||
// 实现 EnsureSender和sender接口
|
||||
type httpSender struct {
|
||||
// 需要实现的接口
|
||||
EnsureSender
|
||||
|
||||
// 包含sender接口部分实现
|
||||
*baseSender
|
||||
|
||||
// 数据目录
|
||||
dataFolder string
|
||||
|
||||
// 发送地址
|
||||
url string
|
||||
|
||||
// 用于sendLoop和resendLoop发送退出信号
|
||||
closeSignal chan struct{}
|
||||
}
|
||||
|
||||
// 创建一个http数据发送器
|
||||
// 参数:
|
||||
//
|
||||
// _dataFolder 数据存放目录
|
||||
// _url 发送地址
|
||||
func NewHTTPSender(_dataFolder, _url string) (EnsureSender, error) {
|
||||
this := &httpSender{
|
||||
dataFolder: _dataFolder,
|
||||
url: _url,
|
||||
baseSender: newBaseSender(),
|
||||
closeSignal: make(chan struct{}),
|
||||
}
|
||||
|
||||
// 新开协程发送数据
|
||||
go sendLoop(this, this.closeSignal)
|
||||
|
||||
// 定时重发
|
||||
go resendLoop(this, _dataFolder, this.closeSignal)
|
||||
|
||||
return this, nil
|
||||
}
|
||||
|
||||
// EnsureSender接口
|
||||
// Write:写入数据
|
||||
func (this *httpSender) Write(data string) error {
|
||||
item := newHTTPData(data)
|
||||
|
||||
this.waitingDataChan <- item
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// EnsureSender接口
|
||||
// Close:关闭
|
||||
func (this *httpSender) Close() error {
|
||||
close(this.done)
|
||||
|
||||
// 等待sendLoop和resendLoop退出
|
||||
<-this.closeSignal
|
||||
<-this.closeSignal
|
||||
|
||||
// 保存数据
|
||||
_, e1 := saveData(this.Cache(), this.dataFolder)
|
||||
_, e2 := saveData(this.Data(), this.dataFolder)
|
||||
|
||||
if e2 != nil {
|
||||
if e1 != nil {
|
||||
return fmt.Errorf("%s %s", e1, e2)
|
||||
}
|
||||
return e2
|
||||
} else {
|
||||
return e1
|
||||
}
|
||||
}
|
||||
|
||||
// sender接口
|
||||
// Send:发送数据
|
||||
func (this *httpSender) Send(item dataItem) error {
|
||||
statusCode, _, err := webUtil.PostByteData2(this.url, item.Bytes(), nil, nil)
|
||||
if err != nil || statusCode != 200 {
|
||||
if err == nil {
|
||||
err = fmt.Errorf("StatusCode is not 200")
|
||||
}
|
||||
|
||||
// 发送失败时发送次数+1
|
||||
item.SetCount(item.Count() + 1)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package model
|
||||
|
||||
// IRequest 请求对象接口
|
||||
type IRequest interface {
|
||||
// GetActionName 获取方法名
|
||||
GetActionName() string
|
||||
|
||||
// SetCommonRequestObject 设置公共请求对象
|
||||
SetCommonRequest(*CommonRequest)
|
||||
|
||||
// AssembleParamMap 组装参数字典
|
||||
AssembleParamMap() map[string]string
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package startMgr
|
||||
|
||||
/*
|
||||
startMgr是用于管理应用程序启动的一个模块。
|
||||
应用程序启动,对配置的处理大体可以包含如下三个过程:
|
||||
1、配置初始化:即将配置从配置文件、数据库中读取到内存中
|
||||
2、配置检验:即验证配置是否是合法、有效的
|
||||
3、配置转换:即将以A形式存在的配置转换为以B形式存在;如将以,分隔的字符串转换为[]int
|
||||
4、配置打印:将配置进行打印
|
||||
5、配置赋值:将初始化的临时的数据赋值给正式的数据
|
||||
|
||||
三个过程分别对应五个子包:
|
||||
1、配置初始化:initMgr
|
||||
说明:根据名称来注册方法,可以根据名称来调用方法,以实现方法的提前调用。
|
||||
也可以无序地调用所有的方法
|
||||
|
||||
错误处理方式:
|
||||
以panic的方式来对外暴露名称重复,名称不存在的错误
|
||||
以error的方式来返回方法执行过程中的错误
|
||||
|
||||
2、配置检验:checkMgr
|
||||
说明:以无序地调用所有的方法
|
||||
错误处理方式:
|
||||
以panic的方式来对外暴露名称重复,名称不存在的错误
|
||||
以error的方式来返回方法执行过程中的错误
|
||||
|
||||
3、配置转换:convertMgr
|
||||
说明:以无序地调用所有的方法
|
||||
错误处理方式:
|
||||
以panic的方式来对外暴露名称重复,名称不存在的错误
|
||||
以error的方式来返回方法执行过程中的错误
|
||||
|
||||
4、配置打印:printMgr
|
||||
说明:以无序地调用所有的方法
|
||||
错误处理方式:
|
||||
以panic的方式来对外暴露名称重复,名称不存在的错误
|
||||
以error的方式来返回方法执行过程中的错误
|
||||
|
||||
5、配置赋值:applyMgr
|
||||
说明:以无序地调用所有的方法
|
||||
错误处理方式:
|
||||
以panic的方式来对外暴露名称重复,名称不存在的错误
|
||||
以error的方式来返回方法执行过程中的错误
|
||||
*/
|
||||
@@ -0,0 +1,7 @@
|
||||
package mqMgr
|
||||
|
||||
// 网络类型:内网、外网
|
||||
const (
|
||||
MQ_NETWORK_INTERNAL = "tencentyun"
|
||||
MQ_NETWORK_PUBLIC = "tencenttdmq" //"qcloud" //todo:切换成tdmq之后,该值需要修改成:tencenttdmq
|
||||
)
|
||||
Reference in New Issue
Block a user