mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
test
This commit is contained in:
parent
3bc2e97e8b
commit
35958ca3a2
@ -10,8 +10,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const OnlineTopicBusy = "Busy"
|
const OnlineTopicBusy = 1
|
||||||
const OnlineTopicVacancy = "Vacancy"
|
const OnlineTopicVacancy = 0
|
||||||
|
|
||||||
var (
|
var (
|
||||||
persistentCH PersistentConsumerHandler
|
persistentCH PersistentConsumerHandler
|
||||||
@ -19,7 +19,7 @@ var (
|
|||||||
offlineHistoryCH OfflineHistoryConsumerHandler
|
offlineHistoryCH OfflineHistoryConsumerHandler
|
||||||
producer *kafka.Producer
|
producer *kafka.Producer
|
||||||
cmdCh chan Cmd2Value
|
cmdCh chan Cmd2Value
|
||||||
onlineTopicStatus string
|
onlineTopicStatus int
|
||||||
w *sync.Mutex
|
w *sync.Mutex
|
||||||
singleMsgSuccessCount uint64
|
singleMsgSuccessCount uint64
|
||||||
groupMsgCount uint64
|
groupMsgCount uint64
|
||||||
@ -31,6 +31,7 @@ func Init() {
|
|||||||
w = new(sync.Mutex)
|
w = new(sync.Mutex)
|
||||||
persistentCH.Init()
|
persistentCH.Init()
|
||||||
historyCH.Init(cmdCh)
|
historyCH.Init(cmdCh)
|
||||||
|
onlineTopicStatus = OnlineTopicVacancy
|
||||||
log.Debug("come msg transfer ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic)
|
log.Debug("come msg transfer ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic)
|
||||||
offlineHistoryCH.Init(cmdCh)
|
offlineHistoryCH.Init(cmdCh)
|
||||||
statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval)
|
statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval)
|
||||||
@ -47,12 +48,12 @@ func Run() {
|
|||||||
go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH)
|
go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH)
|
||||||
go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH)
|
go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH)
|
||||||
}
|
}
|
||||||
func SetOnlineTopicStatus(status string) {
|
func SetOnlineTopicStatus(status int) {
|
||||||
w.Lock()
|
w.Lock()
|
||||||
defer w.Unlock()
|
defer w.Unlock()
|
||||||
onlineTopicStatus = status
|
onlineTopicStatus = status
|
||||||
}
|
}
|
||||||
func GetOnlineTopicStatus() string {
|
func GetOnlineTopicStatus() int {
|
||||||
w.Lock()
|
w.Lock()
|
||||||
defer w.Unlock()
|
defer w.Unlock()
|
||||||
return onlineTopicStatus
|
return onlineTopicStatus
|
||||||
|
@ -103,23 +103,20 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS
|
|||||||
// log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline")
|
// log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline")
|
||||||
// //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
// //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
||||||
//}
|
//}
|
||||||
cmd := Cmd2Value{}
|
for msg := range claim.Messages() {
|
||||||
repeat:
|
if GetOnlineTopicStatus() == OnlineTopicVacancy {
|
||||||
select {
|
log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value))
|
||||||
case cmd = <-mc.cmdCh:
|
mc.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
||||||
case <-time.After(time.Millisecond * time.Duration(1)):
|
sess.MarkMessage(msg, "")
|
||||||
goto repeat
|
} else {
|
||||||
}
|
select {
|
||||||
if cmd.Cmd == OnlineTopicVacancy {
|
case <-mc.cmdCh:
|
||||||
for msg := range claim.Messages() {
|
case <-time.After(time.Millisecond * time.Duration(100)):
|
||||||
if GetOnlineTopicStatus() == OnlineTopicVacancy {
|
|
||||||
log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value))
|
|
||||||
mc.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
|
||||||
sess.MarkMessage(msg, "")
|
|
||||||
} else {
|
|
||||||
goto repeat
|
|
||||||
}
|
}
|
||||||
|
mc.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
||||||
|
sess.MarkMessage(msg, "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ import (
|
|||||||
|
|
||||||
type fcb func(msg []byte, msgKey string)
|
type fcb func(msg []byte, msgKey string)
|
||||||
type Cmd2Value struct {
|
type Cmd2Value struct {
|
||||||
Cmd string
|
Cmd int
|
||||||
Value interface{}
|
Value interface{}
|
||||||
}
|
}
|
||||||
type OnlineHistoryConsumerHandler struct {
|
type OnlineHistoryConsumerHandler struct {
|
||||||
@ -37,7 +37,7 @@ func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) {
|
|||||||
config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo)
|
config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo)
|
||||||
|
|
||||||
}
|
}
|
||||||
func (och *OnlineHistoryConsumerHandler) TriggerCmd(status string) {
|
func (och *OnlineHistoryConsumerHandler) TriggerCmd(status int) {
|
||||||
operationID := utils.OperationIDGenerator()
|
operationID := utils.OperationIDGenerator()
|
||||||
for {
|
for {
|
||||||
err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1)
|
err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1)
|
||||||
@ -135,15 +135,15 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS
|
|||||||
claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
|
claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group
|
||||||
log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition())
|
log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition())
|
||||||
for msg := range claim.Messages() {
|
for msg := range claim.Messages() {
|
||||||
och.TriggerCmd(OnlineTopicBusy)
|
|
||||||
SetOnlineTopicStatus(OnlineTopicBusy)
|
SetOnlineTopicStatus(OnlineTopicBusy)
|
||||||
log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online")
|
//och.TriggerCmd(OnlineTopicBusy)
|
||||||
|
log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online", msg.Offset, claim.HighWaterMarkOffset())
|
||||||
och.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
och.msgHandle[msg.Topic](msg.Value, string(msg.Key))
|
||||||
sess.MarkMessage(msg, "")
|
sess.MarkMessage(msg, "")
|
||||||
if claim.HighWaterMarkOffset()-msg.Offset <= 1 {
|
if claim.HighWaterMarkOffset()-msg.Offset <= 1 {
|
||||||
log.Debug("", "online msg consume end", claim.HighWaterMarkOffset(), msg.Offset)
|
log.Debug("", "online msg consume end", claim.HighWaterMarkOffset(), msg.Offset)
|
||||||
och.TriggerCmd(OnlineTopicVacancy)
|
|
||||||
SetOnlineTopicStatus(OnlineTopicVacancy)
|
SetOnlineTopicStatus(OnlineTopicVacancy)
|
||||||
|
och.TriggerCmd(OnlineTopicVacancy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user