【问题标题】:Spring Cloud Connector Plan InformationSpring Cloud 连接器计划信息
【发布时间】:2019-08-05 09:47:52
【问题描述】:

我正在使用 Spring Cloud Connector 绑定到数据库。有没有办法得到绑定服务的计划?当我扩展AbstractCloudConfig 并做

cloud().getSingletonServiceInfosByType(PostgresqlServiceInfo.class)...

我将提供有关 url 以及如何连接到 postgres 的信息。 PostgresqlServiceInfo 等不携带计划数据。如何扩展服务信息,以便阅读此信息表单VCAP_SERVICES

谢谢

【问题讨论】:

    标签: spring spring-boot spring-cloud cloud-foundry spring-cloud-connectors


    【解决方案1】:

    根据设计,Spring Cloud 连接器中的ServiceInfo 类只携带足够的信息来创建应用程序使用服务资源所需的连接bean。连接器被设计为与平台无关,并且不会捕获 Cloud Foundry 上可用的 planlabeltags 等字段,因为它们可能在其他平台(例如 Heroku)上不可用。

    要将plan 信息添加到ServiceInfo,您需要编写自己的包含值字段的ServiceInfo 类,然后编写CloudFoundryServiceInfoCreator 以填充@987654331 中的值@ 框架提供为Map 的数据。有关创建此类扩展的更多信息,请参阅project documentation

    另一个(可能更简单)的选择是使用较新的 java-cfenv 项目而不是 Spring Cloud 连接器。 java-cfenv 仅支持 Cloud Foundry,并允许访问 VCAP_SERVICES 中的完整信息集。有关如何使用此库的示例,请参阅 project documentation

    【讨论】:

    • 嗨,Scott,我想的差不多(用于扩展云连接器)。问题是,创建者被维护在一个列表中,并且将使用第一个接受数据的创建者(服务信息创建者accept 方法)。不确定,是否更喜欢自定义,或者这会导致竞争条件?
    • Cloud 类中的方法(如您的帖子中提到的方法)将返回与提供的条件(例如服务名称或 ServiceInfo 类型)匹配的所有 ServiceInfos 的列表。这些方法应该返回内置的PostgresqlServiceInfo 和任何通过accept 匹配的自定义ServiceInfos)。如果您想使用AbstractCloudConfig 中的connectionFactory 来获得DataSource Bean,您还需要编写一个看起来很像PostgresqlDataSourceCreator 的自定义ServiceConnectorCreator,但使用您自定义的ServiceInfo 类型进行选择.
    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多