

# Java 和 DAX
<a name="DAX.client.run-application-java"></a>

适用于 Java 的 DAX SDK 2.x 兼容[适用于 Java 的 Amazon SDK 2.x](https://docs.amazonaws.cn/sdk-for-java/latest/developer-guide/)。它基于 Java 8\$1 构建，支持非阻塞 I/O。有关将 DAX 与适用于 Java 的 Amazon SDK 1.x 结合使用的信息，请参阅[使用 DAX 和 Amazon SDK for Java 1.x](DAX.client.java-sdk-v1.md)。

## 将客户端用作 Maven 依赖项
<a name="DAX.client.run-application-java.maven"></a>

按照这些步骤，在应用程序使用适用于 Java 的 DAX SDK 客户端作为依赖项。

1. 下载并安装 Apache Maven。有关更多信息，请参见[下载 Apache Maven](https://maven.apache.org/download.cgi) 和[安装 Apache Maven](https://maven.apache.org/install.html)。

1. 将客户端 Maven 依赖项添加到应用程序的项目对象模型 (POM) 文件。在此例中，将 *x.x.x* 替换为客户端实际版本号。

   ```
   <!--Dependency:-->
   <dependencies>
       <dependency>
           <groupId>software.amazon.dax</groupId>
           <artifactId>amazon-dax-client</artifactId>
           <version>x.x.x</version>
       </dependency>
   </dependencies>
   ```

## TryDax 示例代码
<a name="DAX.client.run-application-java.sample"></a>

设置工作区并将 DAX SDK 添加为依赖项后，将 [TryDax.java](DAX.client.TryDax.java.md) 复制到项目。

使用此命令运行代码。

```
java -cp classpath TryDax
```

应可以看到如下所示的输出内容。

```
Creating a DynamoDB client

Attempting to create table; please wait...
Successfully created table.  Table status: ACTIVE
Writing data to the table...
Writing 10 items for partition key: 1
Writing 10 items for partition key: 2
Writing 10 items for partition key: 3
...

Running GetItem and Query tests...
First iteration of each test will result in cache misses
Next iterations are cache hits

GetItem test - partition key 1-100 and sort keys 1-10
  Total time: 4390.240 ms - Avg time: 4.390 ms
  Total time: 3097.089 ms - Avg time: 3.097 ms
  Total time: 3273.463 ms - Avg time: 3.273 ms
  Total time: 3353.739 ms - Avg time: 3.354 ms
  Total time: 3533.314 ms - Avg time: 3.533 ms
Query test - partition key 1-100 and sort keys between 2 and 9
  Total time: 475.868 ms - Avg time: 4.759 ms
  Total time: 423.333 ms - Avg time: 4.233 ms
  Total time: 460.271 ms - Avg time: 4.603 ms
  Total time: 397.859 ms - Avg time: 3.979 ms
  Total time: 466.644 ms - Avg time: 4.666 ms

Attempting to delete table; please wait...
Successfully deleted table.
```

记下计时信息—`GetItem` 和 `Query` 测试所需的时间（以毫秒为单位）。在此情况下，对 DynamoDB 端点运行程序。现在，对 DAX 集群再次运行程序。

要确定 DAX 集群的端点，请选择下列选项之一：
+ 在 DynamoDB 控制台中选择 DAX 集群。集群端点显示在控制台中，如下面的示例所示。

  ```
  dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com
  ```
+ 使用 Amazon CLI 输入以下命令：

  ```
  aws dax describe-clusters --query "Clusters[*].ClusterDiscoveryEndpoint"
  ```

  集群端点地址、端口和 URL 显示在输出中，如下面的示例所示。

  ```
  {
      "Address": "my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com",
      "Port": 8111,
      "URL": "dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com"
  }
  ```

现在重新运行程序，但这一次将集群端点指定为命令行参数。

```
java -cp classpath TryDax dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com
```

查看输出，并记下计时信息。与使用 DynamoDB 相比，使用 DAX 时，`GetItem` 和 `Query` 的运行时间应明显更短。

## 开发工具包指标
<a name="DAX.client.run-application-java.metrics"></a>

使用适用于 Java 的 DAX SDK 2.x，可以收集应用程序中服务客户端的指标，并在 Amazon CloudWatch 中分析输出。有关更多信息，请参见[启用 SDK 指标](https://docs.amazonaws.cn/sdk-for-java/latest/developer-guide/metrics.html)。

**注意**  
适用于 Java 的 DAX SDK 仅收集 `ApiCallSuccessful` 和 `ApiCallDuration` 指标。