package main
|
|
import (
|
"andriodServer/controllers"
|
"andriodServer/router"
|
"flag"
|
"fmt"
|
"strconv"
|
"time"
|
|
"andriodServer/esutil"
|
"andriodServer/extend/config"
|
"andriodServer/log"
|
"github.com/streadway/amqp"
|
)
|
|
var addr = flag.String("addr", "0.0.0.0", "The address to listen to")
|
var Eurl = flag.String("eurl", "http://192.168.20.10:9200/", "The port to listen on")
|
//var Picurl = flag.String("picurl", "http://58.118.225.79:41242/", "picture url")
|
|
var port = flag.Int("port", 6000, "The port to listen on")
|
var sec = flag.Int("sec", 10, "the second for query data")
|
|
var Level = flag.String("level","ErrorLevel","log level")
|
var IsHub = flag.String("hub", "hub", "hub is personIsHub=1")
|
var Size = flag.Int("size", 100, "size default is 100")
|
var env = flag.String("env", "config", "env set")
|
var mqIp = flag.String("mqIp", "192.168.20.10", "default mq ip")
|
var mqPort = flag.Int("mqPort", 5672, "default mq port")
|
var mqUser = flag.String("mqUser", "basic", "default rabbitmq user")
|
var mqPass = flag.String("mqPass", "basic", "default rabbitmq pass")
|
var confPath = flag.String("confPath", "/home/basic/Apps/go/AndroidAlarmServer/config/","default config path")
|
|
func main() {
|
flag.Parse()
|
|
log.SetLogLevel(*Level)
|
config.Init(*env, *confPath)
|
fmt.Println(*port)
|
|
controllers.EsUrl = *Eurl
|
|
mqAddr := "amqp://" + *mqUser + ":" + *mqPass + "@" + *mqIp + ":" + strconv.Itoa(*mqPort)+"/"
|
|
conn, err := amqp.Dial(mqAddr)
|
if err != nil {
|
log.Log.Infof("Failed to connect to RabbitMQ,err:",err)
|
return
|
}
|
defer conn.Close()
|
|
ch, err := conn.Channel()
|
if err !=nil {
|
log.Log.Infof("Failed to open a channel,err:",err)
|
return
|
}
|
defer ch.Close()
|
|
q, err := ch.QueueDeclare(
|
"alarm2Android", // name
|
false, // durable
|
false, // delete when unused
|
false, // exclusive
|
false, // no-wait
|
nil, // arguments
|
)
|
if err !=nil {
|
log.Log.Infof("Failed to declare a queue,err:",err)
|
return
|
}
|
r := router.NewRouter()
|
go r.Run("0.0.0.0:"+strconv.Itoa(*port))
|
handleAlarmData2MQ(q, ch)
|
}
|
|
func handleAlarmData2MQ(queue amqp.Queue,ch *amqp.Channel) {
|
tick := time.NewTicker(3 * time.Second)
|
lastTime := time.Now()
|
for {
|
select {
|
case <-tick.C:
|
curTime := time.Now()
|
alarmData := esutil.PostAction(*sec, *Eurl, *IsHub, *Size, lastTime, curTime)
|
if alarmData != nil {
|
err := ch.Publish(
|
"",
|
queue.Name,
|
false,
|
false,
|
amqp.Publishing{
|
ContentType: "text/plain",
|
Body: alarmData,
|
})
|
if err !=nil {
|
log.Log.Infof("send to mq err:"+err.Error())
|
} else {
|
log.Log.Infof("send to mq success,msg: "+string(alarmData))
|
}
|
}
|
lastTime = curTime
|
}
|
}
|
}
|