perf: expand gateway capacity and prevent receipt replay
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package inbound
|
||||
|
||||
import (
|
||||
"cmpp-platform/gateway/internal/protocollog"
|
||||
"context"
|
||||
"fmt"
|
||||
cmpp "github.com/bigwhite/gocmpp"
|
||||
@@ -8,20 +9,7 @@ import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type protocolLogEvent struct {
|
||||
Protocol string `json:"protocol"`
|
||||
Direction string `json:"direction"`
|
||||
EventType string `json:"eventType"`
|
||||
Status string `json:"status"`
|
||||
TenantID string `json:"tenantId,omitempty"`
|
||||
ApplicationID string `json:"applicationId,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
MessageID string `json:"messageId,omitempty"`
|
||||
GatewayMessageID string `json:"gatewayMessageId,omitempty"`
|
||||
Phone string `json:"phone,omitempty"`
|
||||
ResultCode string `json:"resultCode,omitempty"`
|
||||
Detail map[string]any `json:"detail,omitempty"`
|
||||
}
|
||||
type protocolLogEvent = protocollog.Event
|
||||
|
||||
func (s Server) submitResponseProtocolLogger(
|
||||
account string,
|
||||
@@ -71,6 +59,15 @@ func protocolSubmitResponseDetail(sequenceID uint32, sendErr error) map[string]a
|
||||
}
|
||||
|
||||
func (s Server) emitProtocolLog(event protocolLogEvent) {
|
||||
event.GatewayInstanceID = s.GatewayInstanceID
|
||||
if s.ProtocolLogPublisher != nil {
|
||||
go func() {
|
||||
if err := s.ProtocolLogPublisher.Publish(context.Background(), event); err != nil {
|
||||
log.Printf("cmpp inbound protocol log Redis publish failed account=%s message_id=%s error=%q", event.Account, event.MessageID, err)
|
||||
}
|
||||
}()
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), defaultHTTPTimeout)
|
||||
defer cancel()
|
||||
|
||||
Reference in New Issue
Block a user