0
我試圖使用java發佈 - 訂閱客戶端得到一個名爲話題:用於發佈訂閱無法找到谷歌API客戶端話題
@Value("projects/${pubsub.projectId}/topics/${environment}-events")
String topic;
Pubsub client = PubsubUtils.getClient();
if (enabled) {
logger.info("PubSub event logging: enabled");
Topic t = null;
try {
t = client.projects().topics().get(topic).execute();
if (t != null) {
logger.info("PubSub topic {} already exists. Continuing ...", topic);
return client;
}
} catch (Exception ex) {
logger.info("Failed to get topic: {}", topic, ex);
}
// create topic
if (t == null) {
createTopic(client);
}
} else {
logger.info("PubSub event logging: disabled");
}
不幸的是,當我跑這跟
String topic = "projects/projectid/topics/topicid";
我不斷地得到回404響應:
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 404 (Not Found)!!1</title>
<style>
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
</style>
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>404.</b> <ins>That’s an error.</ins>
<p>The requested URL <code>/v1/projects%2Fbrightcove-rna-master%2Ftopics%2Fdev_achauhan-events</code> was not found on this server. <ins>That’s all we know.</ins>
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1049)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.brightcove.collector.beans.PubSubProducerBean.createTopic(PubSubProducerBean.java:54)
at com.brightcove.collector.beans.PubSubProducerBean.getPublisher(PubSubProducerBean.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
... 54 more
從它的外觀來看,客戶端庫似乎是url轉義主題名稱在網址和谷歌服務器失敗。
有沒有辦法解決這個問題或者更好的方法來讓谷歌API客戶端不逃避主題名稱。
編輯按照要求,這是完整的源代碼:
@Value("projects/${pubsub.projectId}/topics/${environment}-events")
String topic;
Pubsub getPublisher() throws Exception {
Pubsub client = PubsubUtils.getClient();
if (enabled) {
logger.info("PubSub event logging: enabled");
Topic t = null;
try {
t = client.projects().topics().get(topic).execute();
if (t != null) {
logger.info("PubSub topic {} already exists. Continuing ...", topic);
return client;
}
} catch (Exception ex) {
logger.info("Failed to get topic: {}", topic, ex);
}
// create topic
if (t == null) {
createTopic(client);
}
} else {
logger.info("PubSub event logging: disabled");
}
return client;
}
Topic createTopic(Pubsub client) throws IOException {
return client.projects().topics().create(topic, new Topic().setName(topic)).execute();
}
您使用的是哪個版本的客戶端庫? –
另外,它似乎在createTopic失敗,沒有得到。你可以顯示createTopic的代碼嗎? –
用完整的源代碼更新了問題。 –