私は、キャッシュストレージのためのredisでSpring mvc + Hibernateを使用してマルチスレッドWebアプリケーションを開発しています。私はコントローラやサービスにロックを適用する方法を見つけることに目を向けています。Spring + Hibernate + Redisの分散ロック
私はHibernateが提供するロック機構をデータベースレベルで適用することはできません。ここで
は例です:CampaignBulkControllerでメソッドを作成するためにマップされたリクエストが処理されている間
@RestController
@RequestMapping(RestConstants.BASE_PATH + "/campaigns")
Class CampaignController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ApiResponse<?> findOne(@PathVariable Integer id) {
Campaign campaign = repo.findOne(id);
return toResponse(campaign);
}
@RequestMapping(value = "", method = RequestMethod.POST)
public create(@RequestBody Campaign campaign) {
//create an campaign here
}
@RequestMapping(value = "/{id}", method = RequestMethod.PATCH)
public update(@RequestBody Campaign campaign) {
//update an campaign here
}
}
@RestController
@RequestMapping(RestConstants.BASE_PATH + "/bulkCampaigns")
Class CampaignBulkController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public create(@RequestPart MultipartFile data) {
/*
Data contains a list of campaigns with their details,
controller will iterate through the list and create all the campaigns.
*/
}
}
、キャンペーン上の他のすべての書き込みを扱うが、読み込みすることができない、キャンペーンを更新または作成するための要求であるallowed.Thatです/キャンペーンを削除する必要があります。
複数のサーバーがあり、各サーバーはマルチスレッドです。
私はSpringとHibernateの新機能です。どんなアイデアや提案もありがとうございます!
あなたの説明に基づいて、データベースレベルのような音はあなたのロックを欲するものですか?テーブルをロックすると、他のサービスはテーブルを使用する前にロックが解除されるのを待たなければなりません。 – Kayaman
特別なリクエストが処理されている間に、他のリクエストを削除し、「<特別リクエストの名前>が処理中にリクエストを処理できません。 2)特別リクエストが処理されている場合にのみリクエストが入ってくることを保証する必要があります –
特別リクエストは特別リクエストとは異なるテーブルを共有していますか? – Kayaman