日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

带有AWS DynamoDB的反应式Spring Webflux

發布時間:2023/12/3 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带有AWS DynamoDB的反应式Spring Webflux 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AWS已經發布了Java版本2的AWS開發工具包 ,該開發工具包現在支持針對不同AWS服務的API調用的非阻塞IO。 在本文中,我將探討如何使用AWS開發工具包2.x的DynamoDB API以及如何使用Spring Webflux堆棧公開響應式端點-這種方式,應用程序是端對端響應式的,大概應該非常有效地使用資源(我有計劃在此設置上做一些測試作為后續步驟)。

申請詳情

簡單地看一下代碼并在那兒跟隨它可能會更容易-在我的GitHub存儲庫中可以找到它。

該應用程序很簡單-使用以下Kotlin代碼對酒店實體執行CRUD操作:

data class Hotel(val id: String = UUID.randomUUID().toString(),val name: String? = null,val address: String? = null,val state: String? = null,val zip: String? = null )

我想公開端點以保存和檢索酒店實體,并按州獲取酒店列表。

AWS開發工具包2的詳細信息

AWS SDK 2 api的所有軟件包名稱現在都以“ software.amazon.awssdk”前綴開頭,使用以下代碼創建與DynamoDB進行交互的客戶端:

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider import software.amazon.awssdk.regions.Region import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClientval client: DynamoDbAsyncClient = DynamoDbAsyncClient.builder().region(Region.of(dynamoProperties.region)).credentialsProvider(DefaultCredentialsProvider.builder().build()).build()

創建DynamoDbAsyncClient實例后,使用此客戶端的任何操作都將返回Java 8 CompletableFuture類型。 例如。 保存酒店實體時:

val putItemRequest = PutItemRequest.builder().tableName("hotels").item(HotelMapper.toMap(hotel)).build()val result: CompletableFuture<PutItemResponse> =dynamoClient.putItem(putItemRequest)

并通過ID檢索記錄:

val getItemRequest: GetItemRequest = GetItemRequest.builder().key(mapOf(Constants.ID to AttributeValue.builder().s(id).build())).tableName(Constants.TABLE_NAME).build()val response: CompletableFuture<GetItemResponse> = dynamoClient.getItem(getItemRequest)

CompletableFuture提供了一組全面的功能,以在可用時轉換結果。

與Spring Webflux集成

Spring Webflux是一個反應式Web框架。 現在,借助AWS開發工具包2中的非阻塞IO支持,可以使用DynamoDB編寫端到端的響應式和非阻塞應用程序。 Spring Webflux使用反應堆核心提供反應流支持,與AWS開發工具包2集成的技巧是將Java 8 CompletableFuture轉換為反應堆核心類型,方法是通過ID從DynamoDB檢索項目時采用以下方式:

val getItemRequest: GetItemRequest = GetItemRequest.builder().key(mapOf(Constants.ID to AttributeValue.builder().s(id).build())).tableName(Constants.TABLE_NAME).build()return Mono.fromCompletionStage(dynamoClient.getItem(getItemRequest)).map { resp ->HotelMapper.fromMap(id, resp.item())}

Spring Webflux期望不同Web終結點方法簽名的返回類型為響應類型,因此,用于說出酒店列表的典型終結點如下:

@RequestMapping(value = ["/hotels"], method = [RequestMethod.GET]) fun getHotelsByState(@RequestParam("state") state: String): Flux<Hotel> {return hotelRepo.findHotelsByState(state) }

Spring Webflux還支持描述應用程序API的功能性方法,因此,一個等效的API可通過其ID檢索酒店,但表示為功能性DSL,如下所示:

@Configuration class HotelAdditionalRoutes {@Beanfun routes(hotelRepo: HotelRepo) = router {GET("/hotels/{id}") { req ->val id = req.pathVariable("id")val response: Mono<ServerResponse> = hotelRepo.getHotel(id).flatMap { hotel ->ServerResponse.ok().body(BodyInserters.fromObject(hotel))}response.switchIfEmpty(ServerResponse.notFound().build())}} }

結論

AWS SDK 2使編寫端到端反應性和非阻塞應用程序變得簡單。 我已使用Spring Webflux和AWS開發工具包2發電機客戶端在此處編寫此類應用程序。 整個工作示例可在我的GitHub存儲庫中找到-https ://github.com/bijukunjummen/boot-with-dynamodb,其中包含有關如何啟動DynamoDB本地版本并將其用于測試應用程序的說明。

翻譯自: https://www.javacodegeeks.com/2018/12/reactive-spring-webflux-aws-dynamodb.html

總結

以上是生活随笔為你收集整理的带有AWS DynamoDB的反应式Spring Webflux的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。