Bluemix 不在 VCAP_APPLICATION 中包含 instance_id
Bluemix Does Not Include instance_id in VCAP_APPLICATION
我运行
cf env <my app>
并注意到 Bluemix 没有在返回的 VCAP_APPLICATION
对象的 JSON 数据中返回 instance_id
的值。我的应用程序在具有多个实例的 Bluemix 上 运行。大多数其他属性,包括 application_id
和 application_name
都存在。
根据 documentation,听起来所有属性都应该始终存在:
This variable contains the associated attributes for a deployed
application. Results are returned in JSON format. The table below
lists the attributes that are returned.
我遇到的问题是,如果缺少某些必需的属性,Spring Cloud 将无法工作。我是否认为 instance_id
被省略是 Bluemix 中的错误?
我在向 VCAP_APPLICATION
添加虚拟值后确认 Spring Cloud 可以与 Bluemix 一起正常工作。
更新 -- 添加准确的错误
Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:459)
at org.springframework.cloud.Cloud.getAppProperties(Cloud.java:252)
at org.springframework.cloud.Cloud.getCloudProperties(Cloud.java:236)
at org.springframework.cloud.config.java.AbstractCloudConfig.properties(AbstractCloudConfig.java:67)
此错误是由于 Configuration
class 中的此方法扩展 AbstractCloudConfig
:
@Bean
public Properties cloudProperties(){
return properties();
}
大多数 Spring Cloud 如果不知道其实例 ID 就没问题。对于服务发现,为一个实例设置一个唯一标识符可能是个好主意,但如果需要,您可以轻松地自己提供一个(例如 ${random.int}
会起作用),即使您不这样做,大多数事情也会起作用没有它,我想。对于消息消费者而言,它更为重要,因此您可能需要对 Spring Cloud Stream 进行更多自定义。
您的应用程序有多少个实例运行?
无论如何 spring Cloud 会接受一个自我管理的 ID,所以你可以自己提供一个值。
无论如何,您都可以通过描述该平台可能存在的错误的支持小部件向 Bluemix 支持提出请求。
Bluemix 是否 在 VCAP_APPLICATION
环境变量中包含 instance_id
。
当您 运行 cf env <app_name>
命令行时不显示,但当您从 Java 应用程序转储其值时可以看到它可用。
我将以下代码添加到我的 Bluemix Java 应用程序中:
String VCAP_APPLICATION = System.getenv("VCAP_APPLICATION");
System.out.println("VCAP_APPLICATION - " + VCAP_APPLICATION);
然后 运行 以下命令检查最近的日志:
$ cf logs <app-name> --recent
我可以在下面的输出中看到 instance_id
:
2016-01-05T17:05:00.01-0500 [App/0] OUT VCAP_APPLICATION -
{"limits":{"mem":512,"disk":1024,"fds":16384},"application_id":"9958288f-9842-4ddc-93dd-1ea3c90634cd","application_version":"05c3b877-035f-4936-a504-cda523eb8fdf","application_name":"ads-java-cloudant","application_uris":["ads-java-cloudant.mybluemix.net"],"version":"05c3b877-035f-4936-a504-cda523eb8fdf","name":"ads-java-cloudant","space_name":"repro_alexds","space_id":"3075a3e5-2c29-4d8a-9e97-06aed18af1c6","uris":["ads-java-cloudant.mybluemix.net"],"users":null,"instance_id":"427e4ba5851945508e6e96465e097af7","instance_index":0,"host":"0.0.0.0","port":62347,"started_at":"2016-01-05
22:02:02 +0000","started_at_timestamp":1452031322,"start":"2016-01-05
22:02:02 +0000","state_timestamp":1452031322}
我运行
cf env <my app>
并注意到 Bluemix 没有在返回的 VCAP_APPLICATION
对象的 JSON 数据中返回 instance_id
的值。我的应用程序在具有多个实例的 Bluemix 上 运行。大多数其他属性,包括 application_id
和 application_name
都存在。
根据 documentation,听起来所有属性都应该始终存在:
This variable contains the associated attributes for a deployed application. Results are returned in JSON format. The table below lists the attributes that are returned.
我遇到的问题是,如果缺少某些必需的属性,Spring Cloud 将无法工作。我是否认为 instance_id
被省略是 Bluemix 中的错误?
我在向 VCAP_APPLICATION
添加虚拟值后确认 Spring Cloud 可以与 Bluemix 一起正常工作。
更新 -- 添加准确的错误
Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:459)
at org.springframework.cloud.Cloud.getAppProperties(Cloud.java:252)
at org.springframework.cloud.Cloud.getCloudProperties(Cloud.java:236)
at org.springframework.cloud.config.java.AbstractCloudConfig.properties(AbstractCloudConfig.java:67)
此错误是由于 Configuration
class 中的此方法扩展 AbstractCloudConfig
:
@Bean
public Properties cloudProperties(){
return properties();
}
大多数 Spring Cloud 如果不知道其实例 ID 就没问题。对于服务发现,为一个实例设置一个唯一标识符可能是个好主意,但如果需要,您可以轻松地自己提供一个(例如 ${random.int}
会起作用),即使您不这样做,大多数事情也会起作用没有它,我想。对于消息消费者而言,它更为重要,因此您可能需要对 Spring Cloud Stream 进行更多自定义。
您的应用程序有多少个实例运行? 无论如何 spring Cloud 会接受一个自我管理的 ID,所以你可以自己提供一个值。
无论如何,您都可以通过描述该平台可能存在的错误的支持小部件向 Bluemix 支持提出请求。
Bluemix 是否 在 VCAP_APPLICATION
环境变量中包含 instance_id
。
当您 运行 cf env <app_name>
命令行时不显示,但当您从 Java 应用程序转储其值时可以看到它可用。
我将以下代码添加到我的 Bluemix Java 应用程序中:
String VCAP_APPLICATION = System.getenv("VCAP_APPLICATION");
System.out.println("VCAP_APPLICATION - " + VCAP_APPLICATION);
然后 运行 以下命令检查最近的日志:
$ cf logs <app-name> --recent
我可以在下面的输出中看到 instance_id
:
2016-01-05T17:05:00.01-0500 [App/0] OUT VCAP_APPLICATION - {"limits":{"mem":512,"disk":1024,"fds":16384},"application_id":"9958288f-9842-4ddc-93dd-1ea3c90634cd","application_version":"05c3b877-035f-4936-a504-cda523eb8fdf","application_name":"ads-java-cloudant","application_uris":["ads-java-cloudant.mybluemix.net"],"version":"05c3b877-035f-4936-a504-cda523eb8fdf","name":"ads-java-cloudant","space_name":"repro_alexds","space_id":"3075a3e5-2c29-4d8a-9e97-06aed18af1c6","uris":["ads-java-cloudant.mybluemix.net"],"users":null,"instance_id":"427e4ba5851945508e6e96465e097af7","instance_index":0,"host":"0.0.0.0","port":62347,"started_at":"2016-01-05 22:02:02 +0000","started_at_timestamp":1452031322,"start":"2016-01-05 22:02:02 +0000","state_timestamp":1452031322}