You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
package command
|
|
|
|
import (
|
|
"github.com/seaweedfs/seaweedfs/weed/mq/agent"
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/mq_agent_pb"
|
|
"google.golang.org/grpc/reflection"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/glog"
|
|
"github.com/seaweedfs/seaweedfs/weed/pb"
|
|
"github.com/seaweedfs/seaweedfs/weed/security"
|
|
"github.com/seaweedfs/seaweedfs/weed/util"
|
|
)
|
|
|
|
var (
|
|
mqAgentOptions MessageQueueAgentOptions
|
|
)
|
|
|
|
type MessageQueueAgentOptions struct {
|
|
brokers []pb.ServerAddress
|
|
brokersString *string
|
|
filerGroup *string
|
|
ip *string
|
|
port *int
|
|
}
|
|
|
|
func init() {
|
|
cmdMqAgent.Run = runMqAgent // break init cycle
|
|
mqAgentOptions.brokersString = cmdMqAgent.Flag.String("broker", "localhost:17777", "comma-separated message queue brokers")
|
|
mqAgentOptions.ip = cmdMqAgent.Flag.String("ip", "localhost", "message queue agent host address")
|
|
mqAgentOptions.port = cmdMqAgent.Flag.Int("port", 16777, "message queue agent gRPC server port")
|
|
}
|
|
|
|
var cmdMqAgent = &Command{
|
|
UsageLine: "mq.agent [-port=6377] [-master=<ip:port>]",
|
|
Short: "<WIP> start a message queue agent",
|
|
Long: `start a message queue agent
|
|
|
|
The agent runs on local server to accept gRPC calls to write or read messages.
|
|
The messages are sent to message queue brokers.
|
|
|
|
`,
|
|
}
|
|
|
|
func runMqAgent(cmd *Command, args []string) bool {
|
|
|
|
util.LoadSecurityConfiguration()
|
|
|
|
mqAgentOptions.brokers = pb.ServerAddresses(*mqAgentOptions.brokersString).ToAddresses()
|
|
|
|
return mqAgentOptions.startQueueAgent()
|
|
|
|
}
|
|
|
|
func (mqAgentOpt *MessageQueueAgentOptions) startQueueAgent() bool {
|
|
|
|
grpcDialOption := security.LoadClientTLS(util.GetViper(), "grpc.msg_agent")
|
|
|
|
agentServer := agent.NewMessageQueueAgent(&agent.MessageQueueAgentOptions{
|
|
SeedBrokers: mqAgentOpt.brokers,
|
|
}, grpcDialOption)
|
|
|
|
// start grpc listener
|
|
grpcL, _, err := util.NewIpAndLocalListeners(*mqAgentOpt.ip, *mqAgentOpt.port, 0)
|
|
if err != nil {
|
|
glog.Fatalf("failed to listen on grpc port %d: %v", *mqAgentOpt.port, err)
|
|
}
|
|
grpcS := pb.NewGrpcServer()
|
|
mq_agent_pb.RegisterSeaweedMessagingAgentServer(grpcS, agentServer)
|
|
reflection.Register(grpcS)
|
|
grpcS.Serve(grpcL)
|
|
|
|
return true
|
|
|
|
}
|