增加连接修复
This commit is contained in:
parent
7dc125cc22
commit
573d68de01
|
@ -24,7 +24,7 @@ type TcpHelper struct {
|
||||||
|
|
||||||
func (t *TcpHelper) Init(port string) *TcpHelper {
|
func (t *TcpHelper) Init(port string) *TcpHelper {
|
||||||
lockSingle.Do(func() {
|
lockSingle.Do(func() {
|
||||||
var conn, err = net.Dial("tcp", "192.168.110.50:"+port)
|
var conn, err = net.DialTimeout("tcp", "192.168.110.50:"+port, 10*time.Second)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.client = conn
|
t.client = conn
|
||||||
t.watch(t.client)
|
t.watch(t.client)
|
||||||
|
@ -35,13 +35,14 @@ func (t *TcpHelper) Init(port string) *TcpHelper {
|
||||||
func (t *TcpHelper) reconnect(port string) {
|
func (t *TcpHelper) reconnect(port string) {
|
||||||
var conn, err = net.Dial("tcp", "192.168.110.50:"+port)
|
var conn, err = net.Dial("tcp", "192.168.110.50:"+port)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
atomic.StoreInt32(t.Full, 0)
|
||||||
t.client = conn
|
t.client = conn
|
||||||
t.watch(t.client)
|
t.watch(t.client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (t *TcpHelper) SendMsg(msg []byte) error {
|
func (t *TcpHelper) SendMsg(msg []byte) error {
|
||||||
|
msg = append(msg, '\n')
|
||||||
_, err := t.Init(config.GetConf().OrderPort).client.Write(msg)
|
_, err := t.Init(config.GetConf().OrderPort).client.Write(msg)
|
||||||
|
|
||||||
var buffer [1]byte
|
var buffer [1]byte
|
||||||
// 持续读取数据
|
// 持续读取数据
|
||||||
n, err := t.client.Read(buffer[:])
|
n, err := t.client.Read(buffer[:])
|
||||||
|
@ -50,10 +51,11 @@ func (t *TcpHelper) SendMsg(msg []byte) error {
|
||||||
recvStr := string(buffer[:n])
|
recvStr := string(buffer[:n])
|
||||||
fmt.Println("结果:recvStr:", recvStr)
|
fmt.Println("结果:recvStr:", recvStr)
|
||||||
if recvStr == "1" {
|
if recvStr == "1" {
|
||||||
fmt.Println("满了")
|
fmt.Println("客户端繁忙")
|
||||||
atomic.AddInt32(t.Full, 1)
|
atomic.StoreInt32(t.Full, 1)
|
||||||
} else if recvStr == "2" {
|
} else if recvStr == "2" {
|
||||||
atomic.AddInt32(t.Full, -1)
|
fmt.Println("客户端空闲")
|
||||||
|
atomic.StoreInt32(t.Full, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,8 +67,9 @@ func (t *TcpHelper) Close(conn net.Conn) {
|
||||||
}
|
}
|
||||||
func (t *TcpHelper) watch(conn net.Conn) {
|
func (t *TcpHelper) watch(conn net.Conn) {
|
||||||
go func() {
|
go func() {
|
||||||
fmt.Println("watch")
|
|
||||||
for {
|
for {
|
||||||
|
fmt.Println("watch")
|
||||||
conn.SetWriteDeadline(time.Now().Add(time.Second * 3))
|
conn.SetWriteDeadline(time.Now().Add(time.Second * 3))
|
||||||
_, err := conn.Write([]byte("1"))
|
_, err := conn.Write([]byte("1"))
|
||||||
|
|
||||||
|
@ -75,8 +78,23 @@ func (t *TcpHelper) watch(conn net.Conn) {
|
||||||
t.client.Close()
|
t.client.Close()
|
||||||
t.reconnect(config.GetConf().OrderPort)
|
t.reconnect(config.GetConf().OrderPort)
|
||||||
return
|
return
|
||||||
|
} else {
|
||||||
|
var buffer [1]byte
|
||||||
|
// 持续读取数据
|
||||||
|
n, err := t.client.Read(buffer[:])
|
||||||
|
if err == nil && n > 0 {
|
||||||
|
recvStr := string(buffer[:n])
|
||||||
|
fmt.Println("结果:recvStr:", recvStr)
|
||||||
|
if recvStr == "1" {
|
||||||
|
fmt.Println("客户端繁忙")
|
||||||
|
atomic.StoreInt32(t.Full, 1)
|
||||||
|
} else if recvStr == "2" {
|
||||||
|
fmt.Println("客户端空闲")
|
||||||
|
atomic.StoreInt32(t.Full, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package mqs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
|
||||||
"github.com/confluentinc/confluent-kafka-go/kafka"
|
"github.com/confluentinc/confluent-kafka-go/kafka"
|
||||||
"quenue/app/http/entities"
|
"quenue/app/http/entities"
|
||||||
"quenue/app/http/tcppool"
|
"quenue/app/http/tcppool"
|
||||||
|
@ -64,21 +63,23 @@ func (kk KafkaV2Mq) Consume(name string, hand interface{}, ci int) {
|
||||||
for i := 0; i < config.GetConf().Num; i++ {
|
for i := 0; i < config.GetConf().Num; i++ {
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
fmt.Println(atomic.LoadInt32(tcppool.TcpFactory.Full))
|
//fmt.Println(atomic.LoadInt32(tcppool.TcpFactory.Full))
|
||||||
if atomic.LoadInt32(tcppool.TcpFactory.Full) == 1 {
|
if atomic.LoadInt32(tcppool.TcpFactory.Full) == 1 {
|
||||||
utils.Log(nil, "对列阻塞")
|
utils.Log(nil, "对列阻塞")
|
||||||
time.Sleep(200 * time.Millisecond)
|
time.Sleep(1000 * time.Millisecond)
|
||||||
|
consumer.GetRebalanceProtocol()
|
||||||
continue
|
continue
|
||||||
|
} else {
|
||||||
|
utils.Log(nil, "对列放开")
|
||||||
}
|
}
|
||||||
msg, err := consumer.ReadMessage(-1)
|
msg, err := consumer.ReadMessage(-1)
|
||||||
fmt.Println("read msg", ci)
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
utils.Log(nil, "offset", msg.TopicPartition.Offset)
|
utils.Log(nil, "offset", msg.TopicPartition.Offset)
|
||||||
var handler = hand.(func(tag uint64, ch interface{}, msg []byte) error)
|
var handler = hand.(func(tag uint64, ch interface{}, msg []byte) error)
|
||||||
var mqsg = entities.MqMessage{}
|
var mqsg = entities.MqMessage{}
|
||||||
mqsg.Key = string(msg.Key)
|
mqsg.Key = string(msg.Key)
|
||||||
mqsg.Property = make(map[string]interface{})
|
mqsg.Property = make(map[string]interface{})
|
||||||
if msg.Headers != nil {
|
if false {
|
||||||
for _, v := range msg.Headers {
|
for _, v := range msg.Headers {
|
||||||
if v.Key == "property" {
|
if v.Key == "property" {
|
||||||
json.Unmarshal(v.Value, &mqsg.Property)
|
json.Unmarshal(v.Value, &mqsg.Property)
|
||||||
|
@ -87,8 +88,9 @@ func (kk KafkaV2Mq) Consume(name string, hand interface{}, ci int) {
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(msg.Value, &mqsg.Body)
|
err = json.Unmarshal(msg.Value, &mqsg.Body)
|
||||||
} else {
|
} else {
|
||||||
|
mqsg.Key = "100000001"
|
||||||
mqsg.Property = map[string]interface{}{"reseller_id": 20001, "order_product_id": 104, "platform_product_id": 592, "serial_number": "100000001", "platform_tag": "InternalTest", "tag": "PInternalTest"}
|
mqsg.Property = map[string]interface{}{"reseller_id": 20001, "order_product_id": 104, "platform_product_id": 592, "serial_number": "100000001", "platform_tag": "InternalTest", "tag": "PInternalTest"}
|
||||||
mqsg.Body = map[string]interface{}{"reseller_id": 20001, "order_price": 12.01, "account_type": 0}
|
mqsg.Body = map[string]interface{}{"reseller_id": 20001, "order_price": 12.01, "account_type": 0, "serial_number": "100000001"}
|
||||||
}
|
}
|
||||||
var data, _ = json.Marshal(mqsg)
|
var data, _ = json.Marshal(mqsg)
|
||||||
err = handler(0, nil, data)
|
err = handler(0, nil, data)
|
||||||
|
|
6
main.go
6
main.go
|
@ -116,11 +116,7 @@ func startServer(opts *config.Options) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//for i := 0; i < 2; i++ {
|
|
||||||
// mqs.MqManager.GetMqByName(common.MQ_KFK).Produce(common.ORDER_RESEND_TOPICAL, time.Now().Format(time.DateTime), 0)
|
|
||||||
//}
|
|
||||||
////
|
|
||||||
//select {}
|
|
||||||
pidFile := opts.GenPidFile()
|
pidFile := opts.GenPidFile()
|
||||||
config.GetConf().KafkaUrl = kafka
|
config.GetConf().KafkaUrl = kafka
|
||||||
config.GetConf().OrderPort = port
|
config.GetConf().OrderPort = port
|
||||||
|
|
Loading…
Reference in New Issue