Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
ficus_router
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yunpeng.song
ficus_router
Commits
aaecc3ee
Commit
aaecc3ee
authored
Aug 28, 2019
by
yunpeng.song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
消息锁改为值引用类型,修改重试工作流初始化方式
parent
588d34fc
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
22 additions
and
18 deletions
+22
-18
msgcontrol/RedisMsg.go
+4
-7
msgcontrol/msgcontrol.go
+6
-3
msgcontrol/msgmap.go
+3
-3
msgcontrol/retry.go
+4
-2
msgcontrol/server.go
+1
-0
work/clientserver.go
+2
-3
work/mqrecv.go
+2
-0
No files found.
msgcontrol/RedisMsg.go
View file @
aaecc3ee
...
...
@@ -14,14 +14,11 @@ import (
//redis 写入 默认列表
type
CtrlRedisMsg
struct
{
//redis
redisClient
*
redis
.
Client
chanRedisMsg
chan
Msg
redisClient
*
redis
.
Client
}
func
NewCtrlRedisMsg
()
*
CtrlRedisMsg
{
p
:=
&
CtrlRedisMsg
{}
p
.
chanRedisMsg
=
make
(
chan
Msg
,
10000
)
p
.
redisClient
=
redis
.
NewClient
(
&
redis
.
Options
{
Addr
:
"127.0.0.1:6379"
,
Password
:
""
,
// no password set
...
...
@@ -68,11 +65,11 @@ func (p *CtrlRedisMsg) GetClientConnSerTraceid(k string) (string, error) {
return
redisctrl
.
HGet
(
p
.
redisClient
,
kname
,
k
)
}
func
(
p
*
CtrlRedisMsg
)
getMsg
(
k
,
field
string
)
Msg
{
func
(
p
*
CtrlRedisMsg
)
getMsg
(
k
,
field
string
)
*
Msg
{
jsonstr
,
_
:=
redisctrl
.
HGet
(
p
.
redisClient
,
k
,
field
)
var
msg
Msg
json
.
Unmarshal
([]
byte
(
jsonstr
),
&
msg
)
return
msg
return
&
msg
}
func
(
p
*
CtrlRedisMsg
)
GetAllMsg
(
k
string
)
map
[
string
]
string
{
...
...
@@ -81,7 +78,7 @@ func (p *CtrlRedisMsg) GetAllMsg(k string) map[string]string {
}
func
(
p
*
CtrlRedisMsg
)
GetMsg
(
k
string
)
Msg
{
func
(
p
*
CtrlRedisMsg
)
GetMsg
(
k
string
)
*
Msg
{
kname
:=
config
.
OctopusRedisConfig
.
MsgStatusName
log
.
WithFields
(
log
.
Fields
{
"func"
:
"GetMsg"
})
.
Info
(
kname
)
msg
:=
p
.
getMsg
(
kname
,
k
)
...
...
msgcontrol/msgcontrol.go
View file @
aaecc3ee
...
...
@@ -7,6 +7,8 @@ import (
"ficus_router/mqcontrol"
"ficus_router/timer"
"time"
log
"github.com/sirupsen/logrus"
)
type
MsgControl
struct
{
...
...
@@ -23,7 +25,7 @@ func NewMsgControl(msgMap *MsgMap, ctrl_SendMq *mqcontrol.Producer, retryChan ch
p
.
ctrl_SendMq
=
ctrl_SendMq
p
.
ctrlRedisClient
=
NewCtrlRedisMsg
()
p
.
msgMap
=
msgMap
//启动超时检测
p
.
Init
()
return
p
}
...
...
@@ -32,11 +34,12 @@ func (p *MsgControl) Init() {
}
func
(
p
*
MsgControl
)
LoadRedisMsg
()
{
kname
:=
config
.
OctopusRedisConfig
.
MsgName
kname
:=
config
.
OctopusRedisConfig
.
Msg
Status
Name
tempMap
:=
p
.
ctrlRedisClient
.
GetAllMsg
(
kname
)
for
_
,
v
:=
range
tempMap
{
m
:=
&
Msg
{}
json
.
Unmarshal
([]
byte
(
v
),
m
)
log
.
Println
(
"load msg "
,
m
.
MsgId
)
p
.
msgMap
.
addMsg
(
m
)
p
.
retryChan
<-
m
}
...
...
@@ -77,7 +80,7 @@ func (p *MsgControl) SetMsg(msg *Msg) bool {
return
true
}
func
(
p
*
MsgControl
)
GetMsg
(
k
string
)
Msg
{
func
(
p
*
MsgControl
)
GetMsg
(
k
string
)
*
Msg
{
return
p
.
ctrlRedisClient
.
GetMsg
(
k
)
}
...
...
msgcontrol/msgmap.go
View file @
aaecc3ee
...
...
@@ -14,7 +14,7 @@ import (
type
(
Msg
struct
{
lock
*
sync
.
RWMutex
lock
sync
.
RWMutex
SerName
string
// 消息对应server
MsgId
string
// 消息 id
Agent
string
// client id
...
...
@@ -62,15 +62,15 @@ func (p *MsgMap) getMsg(k string) *Msg {
}
func
(
p
*
MsgMap
)
SetMsg
(
msg
*
Msg
)
bool
{
p
.
Lock
.
Lock
()
defer
p
.
Lock
.
Unlock
()
p
.
msgMap
[
msg
.
MsgId
]
=
msg
p
.
Lock
.
Unlock
()
return
true
}
func
(
p
*
MsgMap
)
addMsg
(
msg
*
Msg
)
{
p
.
Lock
.
Lock
()
defer
p
.
Lock
.
Unlock
()
p
.
msgMap
[
msg
.
MsgId
]
=
msg
p
.
Lock
.
Unlock
()
}
func
(
p
*
MsgMap
)
AddTryCount
(
k
string
)
{
...
...
msgcontrol/retry.go
View file @
aaecc3ee
...
...
@@ -5,6 +5,8 @@ import (
"ficus_router/config"
"time"
log
"github.com/sirupsen/logrus"
)
/*
...
...
@@ -32,6 +34,7 @@ func NewCtrlRetry(msgControl *MsgControl, retryChan chan *Msg, sendChan chan *Ms
return
p
}
func
(
p
*
CtrlRetry
)
StartRetryWork
()
{
log
.
Println
(
"StartRetryWork"
)
p
.
ReadMsgRetryChan
()
p
.
HandMsgList
()
}
...
...
@@ -85,10 +88,9 @@ func (p *CtrlRetry) ReadMsgRetryChan() {
p
.
msgControl
.
DeleteMsg
(
rm
.
MsgId
)
continue
}
else
{
p
.
msgControl
.
SetMsg
(
&
msg
)
p
.
msgControl
.
SetMsg
(
msg
)
}
SerName
,
_
:=
p
.
msgControl
.
GetClientConnSerTraceid
(
msg
.
Agent
)
*
rm
=
msg
routerName
,
_
:=
p
.
msgControl
.
GetRouterTraceid
(
SerName
)
//判断路由是否切换
if
routerName
==
config
.
GetRouterName
()
{
...
...
msgcontrol/server.go
View file @
aaecc3ee
...
...
@@ -100,6 +100,7 @@ func (p *Ctrl_Srvermap) WriteMsgToServer(msg *Msg) {
}
}
else
{
//发送到重试管道
log
.
Println
(
" send msg to retry"
,
msg
.
MsgId
)
p
.
retryChan
<-
msg
}
}()
...
...
work/clientserver.go
View file @
aaecc3ee
...
...
@@ -18,7 +18,7 @@ func StartClientServer(ctrser *msgcontrol.Ctrl_Srvermap, retryWork *msgcontrol.C
log
.
Println
(
err
,
"tcp"
)
//defer延迟关闭改资源,以免引起内存泄漏
defer
netListen
.
Close
()
retryWork
.
StartRetryWork
()
log
.
Println
(
"Waiting for ServiceClients"
)
for
{
conn
,
err
:=
netListen
.
Accept
()
//第二步:获取连接
...
...
@@ -28,7 +28,7 @@ func StartClientServer(ctrser *msgcontrol.Ctrl_Srvermap, retryWork *msgcontrol.C
}
go
RecvClient
(
conn
,
ctrser
)
}
retryWork
.
StartRetryWork
()
}
func
byteString
(
p
[]
byte
)
string
{
...
...
@@ -65,7 +65,6 @@ func RecvClient(conn net.Conn, ctrser *msgcontrol.Ctrl_Srvermap) {
}
else
if
pServer
.
SerType
==
config
.
SERTYPE_FEEDBACK
{
//注册的反馈服务,则添加入反馈者列表
}
log
.
Println
(
"------"
)
//返回连接的路由消息
var
SendSend
config
.
SerCommand
SendSend
.
Command
=
config
.
COMMAND_LOGIN
...
...
work/mqrecv.go
View file @
aaecc3ee
...
...
@@ -39,7 +39,9 @@ func callback(d mqcontrol.MSG, msgControl *msgcontrol.MsgControl, serverMap *msg
msgControl
.
AddMsgAndMessage
(
&
msg
,
&
mis
)
//2.直接写入 执行管道
//写入待发送到ser管道
log
.
Println
(
"-3-"
)
serverMap
.
WriteMsgToServer
(
&
msg
)
log
.
Println
(
"-4-"
)
}
}()
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment