chrislu
1 year ago
6 changed files with 615 additions and 408 deletions
-
43weed/mq/broker/broker_grpc_create.go
-
20weed/mq/broker/broker_grpc_lookup.go
-
8weed/pb/mq.proto
-
912weed/pb/mq_pb/mq.pb.go
-
36weed/pb/mq_pb/mq_grpc.pb.go
-
4weed/shell/command_mq_topic_create.go
@ -0,0 +1,43 @@ |
|||
package broker |
|||
|
|||
import ( |
|||
"context" |
|||
"github.com/seaweedfs/seaweedfs/weed/mq/topic" |
|||
"github.com/seaweedfs/seaweedfs/weed/pb/mq_pb" |
|||
"google.golang.org/grpc/codes" |
|||
"google.golang.org/grpc/status" |
|||
) |
|||
|
|||
// CreateTopic Runs on any broker, but proxied to the balancer if not the balancer
|
|||
func (broker *MessageQueueBroker) CreateTopic(ctx context.Context, request *mq_pb.CreateTopicRequest) (resp *mq_pb.CreateTopicResponse, err error) { |
|||
if broker.currentBalancer == "" { |
|||
return nil, status.Errorf(codes.Unavailable, "no balancer") |
|||
} |
|||
if !broker.lockAsBalancer.IsLocked() { |
|||
proxyErr := broker.withBrokerClient(false, broker.currentBalancer, func(client mq_pb.SeaweedMessagingClient) error { |
|||
resp, err = client.CreateTopic(ctx, request) |
|||
return nil |
|||
}) |
|||
if proxyErr != nil { |
|||
return nil, proxyErr |
|||
} |
|||
return resp, err |
|||
} |
|||
|
|||
ret := &mq_pb.CreateTopicResponse{} |
|||
ret.BrokerPartitionAssignments, err = broker.Balancer.LookupOrAllocateTopicPartitions(request.Topic, true, request.PartitionCount) |
|||
|
|||
return ret, err |
|||
} |
|||
|
|||
func (broker *MessageQueueBroker) DoCreateTopic(ctx context.Context, req *mq_pb.DoCreateTopicRequest) (resp *mq_pb.DoCreateTopicResponse, err error) { |
|||
ret := &mq_pb.DoCreateTopicResponse{} |
|||
t, p := topic.FromPbTopic(req.Topic), topic.FromPbPartition(req.Partition) |
|||
localTopicPartition := broker.localTopicManager.GetTopicPartition(t, p) |
|||
if localTopicPartition == nil { |
|||
localTopicPartition = topic.NewLocalPartition(t, p, true, nil) |
|||
broker.localTopicManager.AddTopicPartition(t, localTopicPartition) |
|||
} |
|||
|
|||
return ret, err |
|||
} |
912
weed/pb/mq_pb/mq.pb.go
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Reference in new issue
xxxxxxxxxx