Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何为测试准备发布/订阅模拟器?_Google Cloud Platform_Gcloud_Google Cloud Pubsub - Fatal编程技术网

Google cloud platform 如何为测试准备发布/订阅模拟器?

Google cloud platform 如何为测试准备发布/订阅模拟器?,google-cloud-platform,gcloud,google-cloud-pubsub,Google Cloud Platform,Gcloud,Google Cloud Pubsub,我启动gcloud sdk docker docker run -ti --rm --expose=8085 -p 8085:8085 google/cloud-sdk:latest 然后我跑: gcloud beta emulators pubsub start --project=my-project --host-port=0.0.0.0:8085 然后停止服务器,然后: gcloud beta emulators pubsub env-init 给出: Google Cloud

我启动gcloud sdk docker

docker run -ti --rm --expose=8085 -p 8085:8085 google/cloud-sdk:latest
然后我跑:

gcloud beta emulators pubsub start --project=my-project  --host-port=0.0.0.0:8085
然后停止服务器,然后:

gcloud beta emulators pubsub env-init
给出:

Google Cloud SDK 236.0.0
...
pubsub-emulator 2019.02.22
导出PUBSUB_模拟器_主机=0.0.0.0:8085

但没有项目id。如何设置项目以进行测试?如何创建主题和订阅

版本:

gcloud  version
给出:

Google Cloud SDK 236.0.0
...
pubsub-emulator 2019.02.22

您正在使用第二个命令中的project
my project
启动pubsub emulator。一旦它运行,不要杀死它,让它继续运行

要创建主题和订阅,必须使用其中一个SDK。我使用Java SDK创建了一个演示项目:

相关代码如下:

@组件
公共类TestPubFig{
私人最终运输渠道提供商;
私人最终凭证提供者凭证提供者;
私有字符串投影;
私有字符串topicName=“测试主题”;
私有字符串subscriptionName=“测试订阅”;
TestPubSubfig(@Autowired@Value(${spring.cloud.gcp.pubsub.emulator host}”)字符串模拟器主机,
@自动连线@Value(${spring.cloud.gcp.project id})字符串projectId)引发IOException{
this.projectId=projectId;
ManagedChannel=ManagedChannel Builder.forTarget(emulatorHost).usePlaintext().build();
channelProvider=FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel));
credentialsProvider=NoCredentialsProvider.create();
createTopic(topicName);
createSubscription(topicName、subscriptionName);
}
@豆子
公共发布服务器testPublisher()引发IOException{
返回Publisher.newBuilder(ProjectTopicName.of(projectId,topicName))
.setChannelProvider(channelProvider)
.setCredentialsProvider(credentialsProvider)
.build();
}
私有void createSubscription(字符串topicName、字符串subscriptionName)引发IOException{
ProjectTopicName topic=ProjectTopicName.of(projectId,topicName);
ProjectSubscriptionName subscription=ProjectSubscriptionName.of(projectId,subscriptionName);
试一试{
subscriptionAdminClient()
.createSubscription(订阅,主题,PushConfig.getDefaultInstance(),100);
}
捕获(已存在){
//这很好,已经创建了
}
}
私有void createTopic(字符串topicName)引发IOException{
ProjectTopicName topic=ProjectTopicName.of(projectId,topicName);
试一试{
topicAdminClient().createTopic(主题);
}
捕获(已存在){
//这很好,已经创建了
}
}
私有TopicAdminClient TopicAdminClient()引发IOException{
返回TopicAdminClient.create(
Topicadminings.newBuilder()
.setTransportChannelProvider(channelProvider)
.setCredentialsProvider(credentialsProvider.build());
}
私有SubscriptionAdminClient SubscriptionAdminClient()引发IOException{
返回SubscriptionAdminClient.create(SubscriptionAdminSettings.newBuilder())
.setTransportChannelProvider(channelProvider)
.setCredentialsProvider(credentialsProvider)
.build());
}
}

您正在使用第二个命令中的project
my project
启动pubsub emulator。一旦它运行,不要杀死它,让它继续运行

要创建主题和订阅,必须使用其中一个SDK。我使用Java SDK创建了一个演示项目:

相关代码如下:

@组件
公共类TestPubFig{
私人最终运输渠道提供商;
私人最终凭证提供者凭证提供者;
私有字符串投影;
私有字符串topicName=“测试主题”;
私有字符串subscriptionName=“测试订阅”;
TestPubSubfig(@Autowired@Value(${spring.cloud.gcp.pubsub.emulator host}”)字符串模拟器主机,
@自动连线@Value(${spring.cloud.gcp.project id})字符串projectId)引发IOException{
this.projectId=projectId;
ManagedChannel=ManagedChannel Builder.forTarget(emulatorHost).usePlaintext().build();
channelProvider=FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel));
credentialsProvider=NoCredentialsProvider.create();
createTopic(topicName);
createSubscription(topicName、subscriptionName);
}
@豆子
公共发布服务器testPublisher()引发IOException{
返回Publisher.newBuilder(ProjectTopicName.of(projectId,topicName))
.setChannelProvider(channelProvider)
.setCredentialsProvider(credentialsProvider)
.build();
}
私有void createSubscription(字符串topicName、字符串subscriptionName)引发IOException{
ProjectTopicName topic=ProjectTopicName.of(projectId,topicName);
ProjectSubscriptionName subscription=ProjectSubscriptionName.of(projectId,subscriptionName);
试一试{
subscriptionAdminClient()
.createSubscription(订阅,主题,PushConfig.getDefaultInstance(),100);
}
捕获(已存在){
//这很好,已经创建了
}
}
私有void createTopic(字符串topicName)引发IOException{
ProjectTopicName topic=ProjectTopicName.of(projectId,topicName);
试一试{
topicAdminClient().createTopic(主题);
}
捕获(已存在){
//这很好,已经创建了
}
}
私有TopicAdminClient TopicAdminClient()引发IOException{
返回TopicAdminClient.create(
Topicadminings.newBuilder()
.setTransport