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.

41 lines
1.1 KiB

  1. package broker
  2. import (
  3. "github.com/seaweedfs/seaweedfs/weed/mq/balancer"
  4. "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb"
  5. )
  6. func (broker *MessageQueueBroker) ConnectToBalancer(stream mq_pb.SeaweedMessaging_ConnectToBalancerServer) error {
  7. req, err := stream.Recv()
  8. if err != nil {
  9. return err
  10. }
  11. response := &mq_pb.ConnectToBalancerResponse{}
  12. initMessage := req.GetInit()
  13. brokerStats := balancer.NewBrokerStats()
  14. if initMessage != nil {
  15. broker.Balancer.Brokers.Set(initMessage.Broker, brokerStats)
  16. } else {
  17. response.Error = "balancer init message is empty"
  18. return stream.Send(response)
  19. }
  20. defer func() {
  21. broker.Balancer.Brokers.Remove(initMessage.Broker)
  22. }()
  23. stream.Send(response)
  24. for {
  25. req, err := stream.Recv()
  26. if err != nil {
  27. return err
  28. }
  29. if receivedStats := req.GetStats(); receivedStats != nil {
  30. brokerStats.TopicPartitionCount = receivedStats.TopicPartitionCount
  31. brokerStats.MessageCount = receivedStats.MessageCount
  32. brokerStats.BytesCount = receivedStats.BytesCount
  33. brokerStats.CpuUsagePercent = receivedStats.CpuUsagePercent
  34. }
  35. }
  36. return nil
  37. }