53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"flag"
 | |
| 	"os"
 | |
| 	"os/signal"
 | |
| 	"strings"
 | |
| 	"syscall"
 | |
| 
 | |
| 	"github.com/localhots/shezmu"
 | |
| 	"github.com/localhots/shezmu/example/daemons"
 | |
| 	"github.com/localhots/shezmu/example/kafka"
 | |
| 	"github.com/localhots/shezmu/server"
 | |
| 	"github.com/localhots/shezmu/stats"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	var brokers string
 | |
| 
 | |
| 	flag.StringVar(&brokers, "brokers", "127.0.0.1:9092", "Kafka broker addresses separated by space")
 | |
| 	flag.Parse()
 | |
| 
 | |
| 	kafka.Initialize(strings.Split(brokers, " "))
 | |
| 	defer kafka.Shutdown()
 | |
| 
 | |
| 	statsLogger := stats.NewStdoutLogger(0)
 | |
| 	defer statsLogger.Print()
 | |
| 
 | |
| 	statsServer := stats.NewServer()
 | |
| 	server := server.New(6464, statsServer)
 | |
| 	server.Start()
 | |
| 
 | |
| 	s := shezmu.Summon()
 | |
| 	s.Subscriber = kafka.Subscriber{}
 | |
| 	s.DaemonStats = stats.NewGroup(statsLogger, statsServer)
 | |
| 
 | |
| 	s.AddDaemon(&daemons.NumberPrinter{})
 | |
| 	s.AddDaemon(&daemons.PriceConsumer{})
 | |
| 
 | |
| 	s.StartDaemons()
 | |
| 	defer s.StopDaemons()
 | |
| 
 | |
| 	sig := make(chan os.Signal)
 | |
| 	signal.Notify(sig, syscall.SIGINT, syscall.SIGHUP)
 | |
| 	switch <-sig {
 | |
| 	case syscall.SIGHUP:
 | |
| 		s.StopDaemons()
 | |
| 		s.StartDaemons()
 | |
| 	case syscall.SIGINT:
 | |
| 		return
 | |
| 	}
 | |
| }
 |