Browse Source
publish to input buffer
publish to input buffer
currently, the input buffer may not exist when start to publishpull/5637/head
chrislu
11 months ago
7 changed files with 103 additions and 134 deletions
-
1weed/mq/broker/broker_grpc_lookup.go
-
5weed/mq/broker/broker_topic_conf_read_write.go
-
14weed/mq/client/cmd/weed_pub/publisher.go
-
86weed/mq/client/pub_client/lookup.go
-
32weed/mq/client/pub_client/publish.go
-
25weed/mq/client/pub_client/publisher.go
-
74weed/mq/client/pub_client/scheduler.go
@ -1,86 +0,0 @@ |
|||||
package pub_client |
|
||||
|
|
||||
import ( |
|
||||
"context" |
|
||||
"fmt" |
|
||||
"github.com/seaweedfs/seaweedfs/weed/glog" |
|
||||
"github.com/seaweedfs/seaweedfs/weed/pb" |
|
||||
"github.com/seaweedfs/seaweedfs/weed/pb/mq_pb" |
|
||||
) |
|
||||
|
|
||||
func (p *TopicPublisher) doLookupAndConnect(brokerAddress string) error { |
|
||||
if p.config.CreateTopic { |
|
||||
err := pb.WithBrokerGrpcClient(true, |
|
||||
brokerAddress, |
|
||||
p.grpcDialOption, |
|
||||
func(client mq_pb.SeaweedMessagingClient) error { |
|
||||
_, err := client.ConfigureTopic(context.Background(), &mq_pb.ConfigureTopicRequest{ |
|
||||
Topic: &mq_pb.Topic{ |
|
||||
Namespace: p.namespace, |
|
||||
Name: p.topic, |
|
||||
}, |
|
||||
PartitionCount: p.config.CreateTopicPartitionCount, |
|
||||
}) |
|
||||
return err |
|
||||
}) |
|
||||
if err != nil { |
|
||||
return fmt.Errorf("configure topic %s/%s: %v", p.namespace, p.topic, err) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
err := pb.WithBrokerGrpcClient(true, |
|
||||
brokerAddress, |
|
||||
p.grpcDialOption, |
|
||||
func(client mq_pb.SeaweedMessagingClient) error { |
|
||||
lookupResp, err := client.LookupTopicBrokers(context.Background(), |
|
||||
&mq_pb.LookupTopicBrokersRequest{ |
|
||||
Topic: &mq_pb.Topic{ |
|
||||
Namespace: p.namespace, |
|
||||
Name: p.topic, |
|
||||
}, |
|
||||
}) |
|
||||
glog.V(0).Infof("lookup1 topic %s/%s: %v", p.namespace, p.topic, lookupResp) |
|
||||
if p.config.CreateTopic && err != nil { |
|
||||
_, err = client.ConfigureTopic(context.Background(), &mq_pb.ConfigureTopicRequest{ |
|
||||
Topic: &mq_pb.Topic{ |
|
||||
Namespace: p.namespace, |
|
||||
Name: p.topic, |
|
||||
}, |
|
||||
PartitionCount: p.config.CreateTopicPartitionCount, |
|
||||
}) |
|
||||
if err != nil { |
|
||||
return err |
|
||||
} |
|
||||
lookupResp, err = client.LookupTopicBrokers(context.Background(), |
|
||||
&mq_pb.LookupTopicBrokersRequest{ |
|
||||
Topic: &mq_pb.Topic{ |
|
||||
Namespace: p.namespace, |
|
||||
Name: p.topic, |
|
||||
}, |
|
||||
}) |
|
||||
glog.V(0).Infof("lookup2 topic %s/%s: %v", p.namespace, p.topic, lookupResp) |
|
||||
} |
|
||||
if err != nil { |
|
||||
return err |
|
||||
} |
|
||||
|
|
||||
for _, brokerPartitionAssignment := range lookupResp.BrokerPartitionAssignments { |
|
||||
glog.V(0).Infof("topic %s/%s partition %v leader %s followers %v", p.namespace, p.topic, brokerPartitionAssignment.Partition, brokerPartitionAssignment.LeaderBroker, brokerPartitionAssignment.FollowerBrokers) |
|
||||
// partition => publishClient
|
|
||||
publishClient, err := p.doConnect(brokerPartitionAssignment.Partition, brokerPartitionAssignment.LeaderBroker) |
|
||||
if err != nil { |
|
||||
return err |
|
||||
} |
|
||||
p.partition2Broker.Insert( |
|
||||
brokerPartitionAssignment.Partition.RangeStart, |
|
||||
brokerPartitionAssignment.Partition.RangeStop, |
|
||||
publishClient) |
|
||||
} |
|
||||
return nil |
|
||||
}) |
|
||||
|
|
||||
if err != nil { |
|
||||
return fmt.Errorf("lookup topic %s/%s: %v", p.namespace, p.topic, err) |
|
||||
} |
|
||||
return nil |
|
||||
} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue