Samza REST服务资源

2018-08-22 18:30 更新

Samza REST可以暴露任何 JAX-RS 资源。默认情况下,它附带了一个 JobsResource,这将在下面讨论。您可以实现自己的资源并在配置中指定它们。

实施新资源

Samza REST使用 Jersey 实现的 JAX-RS规范。Jersey 文档和示例有助于创建新的资源。

此外,Samza REST强加了以下约定,所有资源都应遵循这些约定。

版本路径

按照惯例,所有资源都使用版本号在其路径前面,以便将来支持旧版API。例如,JobsResource 的基本URL是:

/v1/jobs

如果将来版本的 JobsResource 实现了不同的 API,那么它将在基本路径中使用不同的版本号:

/v2/jobs

所有资源都应该在最新版本上公开,以便客户端可以为所有请求使用通用版本库。

错误消息

每个错误响应将包含一个 JSON 消息正文,其中包含描述问题的单个消息字段。例如:

{
    "message": "Unrecognized status: null"
}

组态

对于需要配置值的资源,还有一些额外的步骤。

  1. 实现一个配置类,它将 MapConfig 扩展为 Resource 的配置的所有常量和访问器。该 SamzaRestConfig 不应与资源 CONFIGS 弄得一团糟。请参阅 JobsResourceConfig 作为示例。
  2. 实现或扩展 ResourceFactory,它将使用全局 Samza REST 配置文件从第1步中实例化 MapConfig 实现,并使用它来构建需要配置的资源。有关示例,请参阅 DefaultResourceFactory
  3. 将所有必需的资源属性添加到 Samza REST配置文件。该 SamzaRestApplication 通过全局配置到配置 ResourceFactories 的资源与 CONFIGS 实例。

向 Samza REST服务添加新资源

资源通过配置添加到 Samza REST服务。根据资源是否需要配置文件的属性,有两种添加新资源的方法。在前一种情况下,资源使用 config 实例化一次,并且实例已注册到SamzaRestApplication;在后一种情况下,Resource 类被注册,并且可以在应用程序的生命周期内实例化多次。

  • 要添加配置的资源,请将 ResourceFactory 实现的完全限定类名称实例化为 rest.resource.factory.classes 服务配置中的属性。
  • 要添加无配置资源,请将资源实现的完全限定类名添加到 rest.resource.classes 服务配置中的属性中。

有关这些配置属性的更多信息,请参阅概述页面中的配置表。

REST服务监视器    »

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号