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