Default client-server over internal connections, small fixup order of service start

This commit is contained in:
DanB
2014-01-23 12:45:13 +01:00
parent 7c52e1e692
commit 4f3e91d8ca
5 changed files with 38 additions and 27 deletions

View File

@@ -295,6 +295,7 @@ func main() {
if *mediatorEnabled {
cfg.MediatorEnabled = *mediatorEnabled
}
if cfg.RaterEnabled {
if err := ratingDb.CacheRating(nil, nil, nil); err != nil {
engine.Logger.Crit(fmt.Sprintf("Cache rating error: %s", err.Error()))
@@ -306,6 +307,7 @@ func main() {
}
}
if cfg.StorDBType == SAME {
logDb = ratingDb.(engine.LogStorage)
} else {
@@ -326,6 +328,7 @@ func main() {
engine.SetDebitPeriod(dp)
}
}
stopHandled := false
// Async starts here
if cfg.RaterEnabled && cfg.RaterBalancer != "" && !cfg.BalancerEnabled {
@@ -333,6 +336,7 @@ func main() {
go stopRaterSignalHandler()
stopHandled = true
}
responder := &engine.Responder{ExitChan: exitChan}
apier := &apier.ApierV1{StorDb: loadDb, RatingDb: ratingDb, AccountDb: accountDb, CdrDb: cdrDb, Config: cfg}
@@ -341,6 +345,7 @@ func main() {
server.RpcRegister(responder)
server.RpcRegister(apier)
}
if cfg.BalancerEnabled {
engine.Logger.Info("Starting CGRateS Balancer")
go stopBalancerSignalHandler()
@@ -353,9 +358,11 @@ func main() {
bal.AddClient("local", new(engine.ResponderWorker))
}
}
if !stopHandled {
go generalSignalHandler()
}
if cfg.SchedulerEnabled {
engine.Logger.Info("Starting CGRateS Scheduler.")
go func() {
@@ -367,6 +374,26 @@ func main() {
}()
}
if cfg.HistoryServerEnabled || cfg.HistoryAgentEnabled {
engine.Logger.Info("Starting History Service.")
go startHistoryScribe()
}
go server.ServeGOB(cfg.RPCGOBListen)
go server.ServeJSON(cfg.RPCJSONListen)
if cfg.CDRSEnabled {
engine.Logger.Info("Starting CGRateS CDR Server.")
go startCDRS(responder, cdrDb)
}
go server.ServeHTTP(cfg.HTTPListen)
if cfg.MediatorEnabled {
engine.Logger.Info("Starting CGRateS Mediator.")
go startMediator(responder, logDb, cdrDb)
}
if cfg.SMEnabled {
engine.Logger.Info("Starting CGRateS SessionManager.")
go startSessionManager(responder, logDb)
@@ -374,27 +401,11 @@ func main() {
go shutdownSessionmanagerSingnalHandler()
}
if cfg.MediatorEnabled {
engine.Logger.Info("Starting CGRateS Mediator.")
go startMediator(responder, logDb, cdrDb)
}
if cfg.CDRSEnabled {
engine.Logger.Info("Starting CGRateS CDR Server.")
go startCDRS(responder, cdrDb)
}
if cfg.HistoryServerEnabled || cfg.HistoryAgentEnabled {
engine.Logger.Info("Starting History Service.")
go startHistoryScribe()
}
if cfg.CdrcEnabled {
engine.Logger.Info("Starting CGRateS CDR Client.")
go startCdrc()
}
go server.ServeGOB(cfg.RPCGOBListen)
go server.ServeJSON(cfg.RPCJSONListen)
go server.ServeHTTP(cfg.HTTPListen)
<-exitChan
if *pidFile != "" {
if err := os.Remove(*pidFile); err != nil {

View File

@@ -202,7 +202,7 @@ func (self *CGRConfig) setDefaults() error {
self.CdrcDurationField = "9"
self.CdrcExtraFields = []string{}
self.MediatorEnabled = false
self.MediatorRater = "127.0.0.1:2013"
self.MediatorRater = "internal"
self.MediatorRaterReconnects = 3
self.MediatorRunIds = []string{}
self.MediatorSubjectFields = []string{}
@@ -216,7 +216,7 @@ func (self *CGRConfig) setDefaults() error {
self.MediatorDurationFields = []string{}
self.SMEnabled = false
self.SMSwitchType = FS
self.SMRater = "127.0.0.1:2013"
self.SMRater = "internal"
self.SMRaterReconnects = 3
self.SMDebitInterval = 10
self.SMMaxCallDuration = time.Duration(3) * time.Hour
@@ -225,7 +225,7 @@ func (self *CGRConfig) setDefaults() error {
self.FreeswitchReconnects = 5
self.HistoryAgentEnabled = false
self.HistoryServerEnabled = false
self.HistoryServer = "127.0.0.1:2013"
self.HistoryServer = "internal"
self.HistoryDir = "/var/log/cgrates/history"
self.HistorySaveInterval = time.Duration(1) * time.Second
self.MailerServer = "localhost:25"

View File

@@ -103,7 +103,7 @@ func TestDefaults(t *testing.T) {
eCfg.CdrcDurationField = "9"
eCfg.CdrcExtraFields = []string{}
eCfg.MediatorEnabled = false
eCfg.MediatorRater = "127.0.0.1:2013"
eCfg.MediatorRater = "internal"
eCfg.MediatorRaterReconnects = 3
eCfg.MediatorRunIds = []string{}
eCfg.MediatorSubjectFields = []string{}
@@ -117,7 +117,7 @@ func TestDefaults(t *testing.T) {
eCfg.MediatorDurationFields = []string{}
eCfg.SMEnabled = false
eCfg.SMSwitchType = FS
eCfg.SMRater = "127.0.0.1:2013"
eCfg.SMRater = "internal"
eCfg.SMRaterReconnects = 3
eCfg.SMDebitInterval = 10
eCfg.SMMaxCallDuration = time.Duration(3) * time.Hour
@@ -125,7 +125,7 @@ func TestDefaults(t *testing.T) {
eCfg.FreeswitchPass = "ClueCon"
eCfg.FreeswitchReconnects = 5
eCfg.HistoryAgentEnabled = false
eCfg.HistoryServer = "127.0.0.1:2013"
eCfg.HistoryServer = "internal"
eCfg.HistoryServerEnabled = false
eCfg.HistoryDir = "/var/log/cgrates/history"
eCfg.HistorySaveInterval = time.Duration(1) * time.Second

View File

@@ -77,7 +77,7 @@
[mediator]
# enabled = false # Starts Mediator service: <true|false>.
# rater = 127.0.0.1:2013 # Address where to reach the Rater: <internal|x.y.z.y:1234>
# rater = internal # Address where to reach the Rater: <internal|x.y.z.y:1234>
# rater_reconnects = 3 # Number of reconnects to rater before giving up.
# run_ids = # Identifiers of each extra mediation to run on CDRs
# reqtype_fields = # Name of request type fields to be used during extra mediation. Use index number in case of .csv cdrs.
@@ -93,7 +93,7 @@
[session_manager]
# enabled = false # Starts SessionManager service: <true|false>.
# switch_type = freeswitch # Defines the type of switch behind: <freeswitch>.
# rater = 127.0.0.1:2013 # Address where to reach the Rater.
# rater = internal # Address where to reach the Rater.
# rater_reconnects = 3 # Number of reconnects to rater before giving up.
# debit_interval = 10 # Interval to perform debits on.
# max_call_duration = 3h # Maximum call duration a prepaid call can last
@@ -110,7 +110,7 @@
[history_agent]
# enabled = false # Starts History as a client: <true|false>.
# server = 127.0.0.1:2013 # Address where to reach the master history server: <internal|x.y.z.y:1234>
# server = internal # Address where to reach the master history server: <internal|x.y.z.y:1234>
[mailer]
# server = localhost # The server to use when sending emails out

View File

@@ -238,7 +238,7 @@ func mailAsync(ub *UserBalance, a *Action) error {
}
toAddrStr += addr
}
message := []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification]: Threshold hit on balance: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nBalance:\r\n\t%s\r\n\r\nYour faithful CGR Balance Monitor\r\n", toAddrStr, ub.Id, time.Now(), ubJson))
message := []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification] Threshold hit on balance: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nBalance:\r\n\t%s\r\n\r\nYours faithfully,\r\nCGR Balance Monitor\r\n", toAddrStr, ub.Id, time.Now(), ubJson))
auth := smtp.PlainAuth("", cgrCfg.MailerAuthUser, cgrCfg.MailerAuthPass, strings.Split(cgrCfg.MailerServer,":")[0]) // We only need host part, so ignore port
go func() {
for i := 0; i < 5; i++ { // Loop so we can increase the success rate on best effort