2017-06-03 15:16:17 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2017-06-03 19:15:20 +00:00
|
|
|
"flag"
|
2018-03-25 21:37:32 +00:00
|
|
|
"fmt"
|
2017-08-09 09:54:11 +00:00
|
|
|
"net/http"
|
2018-03-25 21:37:32 +00:00
|
|
|
"os"
|
2017-06-03 15:16:17 +00:00
|
|
|
|
2018-03-26 00:03:56 +00:00
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
2018-05-14 09:12:58 +00:00
|
|
|
"github.com/mmcloughlin/professor"
|
2017-06-03 15:22:21 +00:00
|
|
|
"github.com/prologic/msgbus"
|
2017-06-03 15:16:17 +00:00
|
|
|
)
|
|
|
|
|
2018-03-25 21:37:32 +00:00
|
|
|
func main() {
|
|
|
|
var (
|
2018-05-10 06:25:13 +00:00
|
|
|
version bool
|
|
|
|
debug bool
|
|
|
|
bind string
|
2018-05-14 09:12:58 +00:00
|
|
|
bufferLength int
|
2018-05-10 06:25:13 +00:00
|
|
|
maxQueueSize int
|
|
|
|
maxPayloadSize int
|
2018-03-25 21:37:32 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
flag.BoolVar(&version, "v", false, "display version information")
|
2018-03-26 00:03:56 +00:00
|
|
|
flag.BoolVar(&debug, "d", false, "enable debug logging")
|
2017-06-03 15:16:17 +00:00
|
|
|
|
2017-06-08 04:53:21 +00:00
|
|
|
flag.StringVar(&bind, "bind", ":8000", "interface and port to bind to")
|
2018-05-10 06:25:13 +00:00
|
|
|
|
2018-05-14 09:12:58 +00:00
|
|
|
flag.IntVar(&bufferLength, "buffer-length", msgbus.DefaultBufferLength, "buffer length")
|
2018-05-10 06:25:13 +00:00
|
|
|
flag.IntVar(&maxQueueSize, "max-queue-size", msgbus.DefaultMaxQueueSize, "maximum queue size")
|
|
|
|
flag.IntVar(&maxPayloadSize, "max-payload-size", msgbus.DefaultMaxPayloadSize, "maximum payload size")
|
2017-06-03 15:16:17 +00:00
|
|
|
|
2018-03-25 21:37:32 +00:00
|
|
|
flag.Parse()
|
|
|
|
|
2018-03-26 00:03:56 +00:00
|
|
|
if debug {
|
|
|
|
log.SetLevel(log.DebugLevel)
|
|
|
|
} else {
|
|
|
|
log.SetLevel(log.InfoLevel)
|
|
|
|
}
|
|
|
|
|
2018-03-25 21:37:32 +00:00
|
|
|
if version {
|
2018-03-25 21:50:02 +00:00
|
|
|
fmt.Printf("msgbusd %s", msgbus.FullVersion())
|
2018-03-25 21:37:32 +00:00
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
|
|
|
2018-05-14 09:12:58 +00:00
|
|
|
if debug {
|
|
|
|
go professor.Launch(":6060")
|
|
|
|
}
|
|
|
|
|
2018-05-02 08:24:30 +00:00
|
|
|
opts := msgbus.Options{
|
2018-05-14 09:12:58 +00:00
|
|
|
BufferLength: bufferLength,
|
2018-05-10 06:25:13 +00:00
|
|
|
MaxQueueSize: maxQueueSize,
|
|
|
|
MaxPayloadSize: maxPayloadSize,
|
|
|
|
WithMetrics: true,
|
2018-05-02 08:24:30 +00:00
|
|
|
}
|
2018-05-08 08:58:37 +00:00
|
|
|
mb := msgbus.New(&opts)
|
2018-05-02 07:41:14 +00:00
|
|
|
|
2018-05-02 08:24:30 +00:00
|
|
|
http.Handle("/", mb)
|
|
|
|
http.Handle("/metrics", mb.Metrics().Handler())
|
2018-03-26 00:03:56 +00:00
|
|
|
log.Infof("msgbusd %s listening on %s", msgbus.FullVersion(), bind)
|
2017-08-09 09:54:11 +00:00
|
|
|
log.Fatal(http.ListenAndServe(bind, nil))
|
2017-06-03 15:16:17 +00:00
|
|
|
}
|