เชฆเชฐเซเชเชจเซ เชจเชฎเชธเซเชเชพเชฐ, เช เชนเซเช เชเซเชตเชพเชฐเซเชเชธ เชถเซเชฐเซเชฃเซเชจเซ เชคเซเชฐเซเชเซ เชชเซเชธเซเช เชเซ!
เชเชพเชตเชพ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเซเชธเชจเซ เชตเชฟเชเชพเชธ เชเชฐเชคเซ เชตเชเชคเซ, เชคเซ เชเชฃเซเชตเชพเชฐ เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ
เชฅเซเชกเซ เชตเชงเซ เชตเชฟเชเชคเชฎเชพเช, เช
เชฎเซ เชธเซเชชเซเชฐเชฅเชฎ เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธเชจเซ เชคเซเชฎเชจเชพ เชฐเซเชเชฟเชเชฆเชพ เชเชพเชฎเชฎเชพเช เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ เชคเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ เชเซเชตเชพเชฐเซเชเชธ เชธเซเชชเซเชฐเชฟเชเช API เชจเซ เชเซเชตเซ เชฐเซเชคเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ เชคเซเชจเชพ เช
เชตเชเชพเชถ เช
เชจเซ เชตเชฟเชเชคเซ เชเซเชเชถเซเช. เชชเชเซ เช
เชฎเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชจเซ เชเชตเชฐเซ เชฒเชเชถเซเช, เชเซ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ เชตเชธเชเชค เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชเซ.
เชถเชพ เชฎเชพเชเซ เชเซเชตเชพเชฐเซเชเชธ? เชธเซเชชเซเชฐเชฅเชฎ, เช เชฒเชพเชเชต เชเซเชกเชฟเชเช เชเซ, เชเชเชฒเซ เชเซ, เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API, เชธเซเชชเซเชฐเชฟเชเช API เช
เชจเซ เช
เชจเซเชฏ เชเชพเชตเชพ API เชฎเชพเช เชเซเชเชชเชฃ เชซเซเชฐเชซเชพเชฐเซเชจเซเช เชเชเซเชฎเซเชเชฟเช เชฐเซเชฒเซเชกเชฟเชเช, เชเซ เชฎเชพเชคเซเชฐ เชเช เชเชฆเซเชถ เชธเชพเชฅเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: mvn quarkus:dev. เชฌเซเชเซเช, เชฎเชพเช เชเชฃเชตเชพเชฎเชพเช เชเชตเซ เชเซ
เช เชฎเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชตเชฟเชถเซ เชตเชฟเชเชคเชฎเชพเช เชเชเชถเซเช เชจเชนเซเช, เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธเชจเซ เชธเชฎเชเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชตเชพ เชธเชฟเชตเชพเชฏ เชเซ เชคเซเช เชเซเชตเชพเชฐเซเชเชธเชฎเชพเช เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชธเชพเชฅเซ เชธเซเชชเซเชฐเชฟเชเช API เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเซ เชถเชเซ เชเซ.
เชเชจเซเชเซเชจเชฐ เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ
เช เชฒเซเชเชจเซ เชธเชฐเชณ เชฐเชพเชเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เช
เชนเซเช เชฎเชพเชคเซเชฐ เชธเชฎเชฐเซเชฅเชจเชจเชพ เชเชเซเช-เชธเซเชคเชฐเชจเชพ เชชเชพเชธเชพเชเชจเซ เชเชตเชฐเซ เชฒเชเชถเซเช.
เชเซเชตเชพเชฐเซเชเชธ เชชเชฃ
เช เชเชคเซ, เชฒเชเซเชทเซเชฏ เชเชฎเชพเชตเช เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชคเชฐเซเชเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชชเชฐ เชงเซเชฏเชพเชจ เชเซเชจเซเชฆเซเชฐเชฟเชค เชเชฐเซเชจเซ, เชเซเชตเชพเชฐเซเชเชธ เชเชตเชพ เชเชฟเชธเซเชธเชพเชเชฎเชพเช เชเชพเชตเชพ เชซเซเชฐเซเชฎเชตเชฐเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซเช เชจเชฅเซ เชเซ เชเซเชฏเชพเช เชเซเชฌเชฐเชจเซเชเซเชธ เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเชพ เชธเซเชคเชฐเซ เชธเชฎเชพเชจ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชนเซเชฏ. เชเซเชทเซเชเช 1 เชเซเชฌเชฐเชจเซเชเซเชธ เช เชจเซ เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชคเชพ เชฒเชพเชเซเชทเชฃเชฟเช เชเชพเชตเชพ เชซเซเชฐเซเชฎเชตเชฐเซเช เชตเชเซเชเซเชจเชพ เชเชพเชฐเซเชฏเชพเชคเซเชฎเช เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐเชจเซ เชจเชเชถเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
เชเซเชทเซเชเช 1. เชเชพเชตเชพ เชซเซเชฐเซเชฎเชตเชฐเซเช เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชตเชเซเชเซเชจเชพ เชเชพเชฐเซเชฏเชพเชคเซเชฎเช เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐเชจเซ เชจเชเชถเซ.
เชเชพเชฐเซเชฏเชพเชคเซเชฎเช
เชชเชฐเชเชชเชฐเชพเชเชค เชตเชธเชเชค เชฌเซเช
เชเซเชฏเซเชฌเชฐเซเชจเซเชเชฟเชธ
เชธเซเชตเชพ เชถเซเชง
เชฏเซเชฐเซเชเชพ
DNS
เชฐเซเชชเชฐเซเชเชพเชเชเชจ
เชตเชธเชเชค เชฎเซเช เชฐเซเชชเชฐเซเชเชพ
เชฐเซเชชเชฐเซเชเชพ เชจเชเชถเชพ/เชฐเชนเชธเซเชฏเซ
เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฟเชเช
เชฐเชฟเชฌเชจ (เชเซเชฒเชพเชฏเชจเซเช เชฌเชพเชเซ)
เชธเซเชตเชพ, เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชจเชฟเชฏเชเชคเซเชฐเช (เชธเชฐเซเชตเชฐ เชฌเชพเชเซ)
เชเชฆเชพเชนเชฐเชฃเชฎเชพเชเชฅเซ เชเซเชกเชจเซเช เชธเชเชเชฒเชจ เช เชจเซ เชเชฒเชพเชตเชตเซเช
เช เชฒเซเชเชฎเชพเช เชเชชเชฃเซ เชเชฒเซเชฒเซเช เชเชฐเซเช เชเซเช
เชตเชธเชเชค เชซเซเชฐเซเชฎเชตเชฐเซเช API
เชจเชฟเชฐเซเชญเชฐเชคเชพ เชเชจเซเชเซเชเซเชถเชจ
เชเซเชตเชพเชฐเซเชเชธ เชถเซเชฐเซเชฃเซเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ
ะ
เชเซเชทเซเชเช 2. เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช DI API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเช เชซเซเชเชฐเซเชธ
เชเชฆเชพเชนเชฐเชฃเซ
เชเชจเซเชธเซเชเซเชฐเชเซเชเชฐ เชเชจเซเชเซเชเซเชถเชจ
public PersonSpringController(
PersonSpringRepository personRepository, // injected
PersonSpringMPService personService) { // injected
this.personRepository = personRepository;
this.personService = personService;
}
เชซเซเชฒเซเชก เชเชจเซเชเซเชเซเชถเชจ
@Autowired
@RestClient
SalutationRestClient salutationRestClient;
@Value("${fallbackSalutation}")
String fallbackSalutation;
@ เชฐเซเชชเชฐเซเชเชพเชเชเชจ
@Configuration
public class AppConfiguration {
@Bean(name = "capitalizeFunction")
public StringFunction capitalizer() {
return String::toUpperCase;
}
}
@Component("noopFunction")
public class NoOpSingleStringFunction implements StringFunction {
@Override
public String apply(String s) {
return s;
}
}
@Service
public class MessageProducer {
@Value("${greeting.message}")
String message;
public String getPrefix() {
return message;
}
}
เชตเซเชฌ เชซเซเชฐเซเชฎเชตเชฐเซเช
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซ เชเชฎเชถเซ เชเซ เชเซเชตเชพเชฐเซเชเชธ เชชเซเชฐเชพเชฅเชฎเชฟเช เชตเซเชฌ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชฎเซเชกเชฒ เชคเชฐเซเชเซ JAX-RS, เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฐเซเชธเซเช เชเซเชฒเชพเชฏเชเช, JSON-P เช
เชจเซ JSON-B เชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธ เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ API เชฎเชพเชเซ เชเซเชตเชพเชฐเซเชเชธเชจเชพ เชคเชพเชเซเชคเชฐเชจเชพ เชธเชฎเชฐเซเชฅเชจเชฅเซ เชเซเชถ เชฅเชถเซ, เชเชพเชธ เชเชฐเซเชจเซ REST เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช. เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเชเชจเซ เชเซเชฎ เช, เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ API เชธเชชเซเชฐเซเชเชจเซ เชฎเซเชเซเชฏ เชงเซเชฏเซเชฏ เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธเชจเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชธเชพเชฅเซ เชเซเชกเชพเชฃเชฎเชพเช เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชธเชเซเชทเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ เชเซ. เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ API เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ เชคเซเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ เชเซเชทเซเชเช 3 เชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ, เช
เชจเซ เช เชตเชฟเชทเชฏ เชชเชฐ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ เช
เชจเซ เชเชฆเชพเชนเชฐเชฃเซ เชเซเชตเชพเชฐเซเชเชธ เชเซเชฏเซเชเซเชฐเซเชฏเชฒเชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ.
เชเซเชทเซเชเช 3. เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชตเซเชฌ เชธเซเชตเชฟเชงเชพเช
เชเชฆเชพเชนเชฐเชฃเซ
@RestController
@RequestMapping
@RestController
@RequestMapping("/person")
public class PersonSpringController {
...
...
...
}
@GetMapping
@เชชเซเชธเซเชเชฎเซเชชเชฟเชเช
@เชชเซเชเชฎเซเชชเชฟเชเช
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixVariable
@PathVariable
@CookieValue
@RequestBody
@ResponseStatus
@ExceptionHandler
@RestControllerAdvice (เชเชเชถเชฟเช)
@GetMapping(path = "/greet/{id}",
produces = "text/plain")
public String greetPerson(
@PathVariable(name = "id") long id) {
...
...
...
}
เชตเชธเชเชค เชกเซเชเชพ JPA
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เช เชชเชฃ เชชเซเชฐเชถเชเชธเชพ เชเชฐเชถเซ เชเซ เชเซเชตเชพเชฐเซเชเชธ เชนเชพเชเชฌเชฐเชจเซเช ORM เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ JPA เชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชตเชธเชเชค เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฎเชพเชเซ เชชเชฃ เชธเชพเชฐเชพ เชธเชฎเชพเชเชพเชฐ เชเซ: เชเซเชตเชพเชฐเซเชเชธ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเชพ JPA เชเชจเซเชเซเชถเชจ เช
เชจเซ เชชเซเชฐเชเชพเชฐเซเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเชพ JPA API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ เชเซเชทเซเชเช 4 เชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ.
ะ
เชเซเชทเซเชเช 4. เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเชพ JPA API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชธเชชเซเชฐเซเชเซเชก เชธเซเชชเซเชฐเชฟเชเช เชกเซเชเชพ JPA เชธเซเชตเชฟเชงเชพเช
เชเชฆเชพเชนเชฐเชฃเซ
CrudRepository
public interface PersonRepository
extends JpaRepository,
PersonFragment {
...
}
เชฐเซเชชเซเชเซเชเชฐเซ
JpaRepository
เชชเซเชเซเชเช เช
เชจเซ เชธเซเชฐเซเชเชฟเชเช เชฐเซเชชเซเชเซเชเชฐเซ
public class PersonRepository extends
Repository {
Person save(Person entity);
Optional findById(Person entity);
}
เชฐเซเชชเซเชเซเชเชฐเซ เชเซเชเชกเชพเช
public interface PersonRepository
extends JpaRepository,
PersonFragment {
...
}
เชตเซเชฏเซเชคเซเชชเชจเซเชจ เชเซเชตเซเชฐเซ เชชเชฆเซเชงเชคเชฟเช
public interface PersonRepository extends CrudRepository {
List findByName(String name);
Person findByNameBySsn(String ssn);
Optional
findByNameBySsnIgnoreCase(String ssn);
Boolean existsBookByYearOfBirthBetween(
Integer start, Integer end);
}
เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชชเซเชฐเชถเซเชจเซ
public interface MovieRepository
extends CrudRepository {
Movie findFirstByOrderByDurationDesc();
@Query("select m from Movie m where m.rating = ?1")
Iterator findByRating(String rating);
@Query("from Movie where title = ?1")
Movie findByTitle(String title);
}
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API
เชธเชนเชจเชถเซเชฒเชคเชพ เชฆเซเชท
เชเชพเชธเซเชเซเชกเชฟเชเช เชจเชฟเชทเซเชซเชณเชคเชพเชเชจเซ เชฐเซเชเชตเชพ เช
เชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชเชฐเซเชเชฟเชเซเชเซเชเชฐเซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชซเซเชฒเซเช เชธเชนเชฟเชทเซเชฃเซเชคเชพ เชฐเชเชจเชพเช เชเซเชฌ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ. เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธ เชเชฃเชพ เชตเชฐเซเชทเซเชฅเซ เชซเซเชฒเซเช เชเซเชฒเชฐเชจเซเชธ เชฎเชพเชเซ เชธเชฐเซเชเชฟเช เชฌเซเชฐเซเชเชฐเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ.
เชเซเชทเซเชเช 5. เชธเชฎเชฐเซเชฅเชฟเชค เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชซเซเชฒเซเช เชเซเชฒเชฐเชจเซเชธ API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชซเซเชฒเซเช เชเซเชฒเชฐเชจเซเชธ เชซเซเชเชฐเซเชธ
เชตเชฐเซเชฃเชจ
เชเชฆเชพเชนเชฐเชฃเซ
@เช เชธเชฟเชเชเซเชฐเซเชจเชธ
เชเช เช เชฒเช เชฅเซเชฐเซเชกเชฎเชพเช เชคเชฐเซเชเชจเซ เช เชฎเชฒ
@Asynchronous
@Retry
public Future<String> getSalutation() {
...
return future;
}
@เชฌเชฒเซเชเชนเซเชก
เชเช เชธเชพเชฅเซ เชตเชฟเชจเชเชคเซเชเชจเซ เชธเชเชเซเชฏเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเชฐเซ
@Bulkhead(5)
public void fiveConcurrent() {
makeRemoteCall(); //...
}
@เชธเชฐเซเชเชฟเชเชฌเซเชฐเซเชเชฐ
เชธเซเชฎเชพเชฐเซเช เชจเชฟเชทเซเชซเชณเชคเชพเชจเซเช เชธเชเชเชพเชฒเชจ เช เชจเซ เชจเชฟเชทเซเชซเชณเชคเชพเชเชฎเชพเชเชฅเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชคเชฟ
@CircuitBreaker(delay=500 // milliseconds
failureRatio = .75,
requestVolumeThreshold = 20,
successThreshold = 5)
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
@เชซเซเชฒเชฌเซเช
เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชตเซเชเชฒเซเชชเชฟเช เชคเชฐเซเชเชจเซ เชเซเชฒ เชเชฐเชตเซ
@Timeout(500) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
public String fallback() {
return "hello";
}
เชตเชฟเชจเชเชคเซ เชจเชฟเชทเซเชซเชณ เชฅเชตเชพ เชชเชฐ เชซเชฐเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ
@Retry(maxRetries=3)
public String getSalutation() {
makeRemoteCall(); //...
}
เชจเชฟเชทเซเชซเชณเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃ เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ
@Timeout(value = 500 ) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
makeRemoteCall(); //...
}
เชคเชชเชพเชธ เชธเซเชตเชพเช (เชธเซเชตเชพ เชเชฐเซเชเซเชฏ)
Kubernetes เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเชพเชธ เชธเซเชตเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเซเชเซเชจเชฐเชจเชพ เชธเซเชตเชพเชธเซเชฅเซเชฏ เชชเชฐ เชจเชเชฐ เชฐเชพเชเซ เชเซ. เช
เชเชคเชฐเซเชเชค เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเซ เชธเซเชตเชพเชเชจเซเช เชจเชฟเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชตเชพ เชฎเชพเชเซ, เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชธเซเชเชฎ เชนเซเชฒเซเชฅ เชเชจเซเชกเชฟเชเซเชเชฐ เช
เชจเซ เชธเซเชชเซเชฐเชฟเชเช เชฌเซเช เชเชเซเชเซเชฏเซเชเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เชเซเชตเชพเชฐเซเชเชธเชฎเชพเช, เช เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชนเซเชฒเซเชฅเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเซ เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ เชเซเชตเชเชคเชคเชพ เชคเชชเชพเชธ เชเชฐเซ เชเซ, เชชเชฐเชเชคเซ เชเช เชธเชพเชฅเซ เชเซเชตเชเชคเชคเชพ เช
เชจเซ เชคเชคเซเชชเชฐเชคเชพ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซ เชถเชเชพเชฏ เชเซ. เชธเชชเซเชฐเซเชเซเชก เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชนเซเชฒเซเชฅ API เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ เชคเซเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ เชเซเชทเซเชเช 6 เชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ, เช
เชจเซ เชตเชงเชพเชฐเชพเชจเซ เชฎเชพเชนเชฟเชคเซ เชเซเชตเชพเชฐเซเชเชธ เชฎเซเชจเซเชฏเซเช
เชฒเชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซเชทเซเชเช 6: เชธเชฎเชฐเซเชฅเชฟเชค เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชนเซเชฒเซเชฅ API เชจเชพ เชเชชเชฏเซเชเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชเชฐเซเชเซเชฏ เชธเซเชตเชฟเชงเชพเช
เชตเชฐเซเชฃเชจ
เชเชฆเชพเชนเชฐเชฃเซ
@เชเซเชตเชเชค
เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชฐเซเชฌเซเช เชจเชฟเชทเซเชซเชณ เชเชจเซเชเซเชจเชฐเชพเชเชเซเชก เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธ
เช
เชเชคเชฟเชฎ เชฌเชฟเชเชฆเซ:
เชนเซเชธเซเช: 8080/เชนเซเชฒเซเชฅ/เชฒเชพเชเชต
@Liveness
public class MyHC implements HealthCheck {
public HealthCheckResponse call() {
...
return HealthCheckResponse
.named("myHCProbe")
.status(ready ? true:false)
.withData("mydata", data)
.build();
}
@เชคเซเชฏเชพเชฐเซ
เชเซ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชคเซเชฏเชพเชฐ เชจ เชนเซเชฏ เชคเซ เชเชจเซเชเซเชจเชฐเชพเชเชเซเชก เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเชฐ เชเซเชฐเชพเชซเชฟเช เชฎเซเชเชฒเชถเซ เชจเชนเซเช
เช
เชเชคเชฟเชฎ เชฌเชฟเชเชฆเซ:
เชฏเชเชฎเชพเชจ: 8080/เชเชฐเซเชเซเชฏ/เชคเซเชฏเชพเชฐ
@Readiness
public class MyHC implements HealthCheck {
public HealthCheckResponse call() {
...
return HealthCheckResponse
.named("myHCProbe")
.status(live ? true:false)
.withData("mydata", data)
.build();
}
เชฎเซเชเซเชฐเชฟเชเซเชธ
เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชเชชเชฐเซเชถเชจเชฒ เชนเซเชคเซเช (เชชเซเชฐเชฆเชฐเซเชถเชจ SLAsเชจเซเช เชจเชฟเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ) เช เชฅเชตเชพ เชฌเชฟเชจ-เชเชชเชฐเซเชถเชจเชฒ เชนเซเชคเซเช (เชตเซเชฏเชตเชธเชพเชฏเชฟเช SLA) เชฎเชพเชเซ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธ เชธเซเชชเซเชฐเชฟเชเช เชฌเซเช เชเชเซเชเซเชฏเซเชเชเชฐ เช เชจเซ เชฎเชพเชเชเซเชฐเซเชฎเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. เชฌเชฆเชฒเชพเชฎเชพเช, เชเซเชตเชพเชฐเซเชเชธ เชฌเซเชเชฒเชพเชเชจ เชฎเซเชเซเชฐเชฟเชเซเชธ (JVM เช เชจเซ เชเชชเชฐเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ), เชตเซเชจเซเชกเชฐ เชฎเซเชเซเชฐเชฟเชเซเชธ (เชเซเชตเชพเชฐเซเชเชธ) เช เชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ เชเซ เช เชฎเชฒเซเชเชฐเชฃ JSON เช เชจเซ OpenMetrics (เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ) เชเชเชเชชเซเช เชซเซเชฐเซเชฎเซเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ. เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธ API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ เชเซเชทเซเชเช 7 เชฎเชพเช เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ.
ะ
เชเซเชทเซเชเช 7. เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธ API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธ เชธเซเชตเชฟเชงเชพเช
เชตเชฐเซเชฃเชจ
เชเชฆเชพเชนเชฐเชฃเซ
@เชเชฃเชคเชฐเซ
เชเช เชเชพเชเชจเซเชเชฐ เชเชพเชเชจเซเชเชฐ เชธเซเชเชตเซ เชเซ เชเซ เชเซเชเชพ เชเชฐเซเชฒ เชเชฌเซเชเซเชเซเชเชจเซ เชเซเชเชฒเซ เชตเชเชค เชเซเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ เชคเซเชจเซ เชเชฃเชคเชฐเซ เชเชฐเซ เชเซ
@Counted(name = "fallbackCounter",
displayName = "Fallback Counter",
description = "Fallback Counter")
public String salutationFallback() {
return fallbackSalutation;
}
@ConcurrentGauge
เชเช เชเซเช เชธเซเชเชตเซ เชเซ เชเซ เชเซเชเชพ เชเชฐเซเชฒ เชเชฌเซเชเซเชเซเช เชชเชฐ เชธเชนเชตเชฐเซเชคเซ เชเซเชฒเซเชธเชจเซ เชธเชเชเซเชฏเชพเชจเซ เชเชฃเชคเชฐเซ เชเชฐเซ เชเซ
@ConcurrentGuage(
name = "fallbackConcurrentGauge",
displayName="Fallback Concurrent",
description="Fallback Concurrent")
public String salutationFallback() {
return fallbackSalutation;
}
@เชเซเช
เชเช เชเซเช เชธเซเชจเซเชธเชฐ เชธเซเชเชตเซ เชเซ เชเซ เชเซเชเชพ เชเชฐเซเชฒ เชเชฌเซเชเซเชเซเชเชจเชพ เชฎเซเชฒเซเชฏเชจเซ เชฎเชพเชชเซ เชเซ
@Metered(name = "FallbackGauge",
displayName="Fallback Gauge",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
@เชฎเซเชเชฐ
เชฎเซเชเชฐ เชธเซเชจเซเชธเชฐ เชธเซเชเชตเซ เชเซ เชเซ เชเซเชเชพ เชเชฐเซเชฒ เชเชฌเซเชเซเชเซเชเชจเซ เชเซเชฒ เชเชตเชฐเซเชคเชจเชจเซเช เชจเชฟเชฐเซเชเซเชทเชฃ เชเชฐเซ เชเซ
@Metered(name = "MeteredFallback",
displayName="Metered Fallback",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
เชเซเชฏเชพเชฐเซ เชฎเซเชเซเชฐเชฟเช เชฆเชพเชเชฒ เชเชฐเชตเชพ เช เชฅเชตเชพ เชฌเชจเชพเชตเชตเชพเชจเซ เชตเชฟเชจเชเชคเซ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เชเซ เชคเซเชฏเชพเชฐเซ เชฎเซเชเชพเชกเซเชเชพ เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชงเชฐเชพเชตเชคเซ เชเซเชเชพ
@Metric
@Metered(name = "MeteredFallback",
displayName="Metered Fallback",
description="Fallback frequency")
public String salutationFallback() {
return fallbackSalutation;
}
เชเชพเชเชฎเชฐ เชธเซเชเชตเซ เชเซ เชเซ เชเซเชเชพ เชเชฐเซเชฒ เชเชฌเซเชเซเชเซเชเชจเซ เช เชตเชงเชฟเชจเซ เชเซเชฐเซ เช เชเชฐเซ เชเซ
@Timed(name = "TimedFallback",
displayName="Timed Fallback",
description="Fallback delay")
public String salutationFallback() {
return fallbackSalutation;
}
เชฎเซเชเซเชฐเชฟเชเซเชธ เชเชจเซเชกเชชเซเชเชจเซเชเซเชธ
เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเซเชเซเชฐเชฟเชเซเชธ
เชฎเซเชณเชญเซเชค เชฎเซเชเซเชฐเชฟเชเซเชธ
เชตเชฟเชเซเชฐเซเชคเชพ เชฎเซเชเซเชฐเชฟเชเซเชธ
เชฌเชงเชพ เชฎเซเชเซเชฐเชฟเชเซเชธ
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฐเซเชธเซเช เชเซเชฒเชพเชฏเชจเซเช
เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชเชฃเซ เชตเชเชค RESTful เชเชจเซเชกเชชเซเชเชจเซเช เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ เชเซเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เช เชจเซเชฐเซเชช เชเซเชฒเชพเชฏเชเช API เชจเซ เชเชฐเซเชฐ เชชเชกเซ เชเซ. RESTful เชเชจเซเชกเชชเซเชเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชตเชธเชเชค เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ RestTemplate เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เชเซเชตเชพเชฐเซเชเชธ เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเซเชฒเชตเชพ เชฎเชพเชเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฐเซเชธเซเช เชเซเชฒเชพเชฏเชจเซเช API เชเชซเชฐ เชเชฐเซ เชเซ, เชเซเชจเชพเช เชเชชเชฏเซเชเชจเชพเช เชเชฆเชพเชนเชฐเชฃเซ เชเซเชทเซเชเช 8 เชฎเชพเช เชเชชเซเชฒ เชเซ.
ะ
เชเซเชทเซเชเช 8. เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฐเซเชธเซเช เชเซเชฒเชพเชฏเชจเซเช API เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเชพ เชเชฆเชพเชนเชฐเชฃเซ.
เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ เชฐเซเชธเซเช เชเซเชฒเชพเชฏเชจเซเช เชธเซเชตเชฟเชงเชพเช
เชตเชฐเซเชฃเชจ
เชเชฆเชพเชนเชฐเชฃเซ
@RegisterRestClient
REST เชเซเชฒเชพเชฏเชเช เชคเชฐเซเชเซ เชเชพเชเชช เชเชฐเซเชฒ เชเชพเชตเชพ เชเชจเซเชเชฐเชซเซเชธเชจเซ เชจเซเชเชงเชฃเซ เชเชฐเซ เชเซ
@RegisterRestClient
@Path("/")
public interface MyRestClient {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getSalutation();
}
@RestClient
เชเชพเชเชช เชเชฐเซเชฒ REST เชเซเชฒเชพเชฏเชเช เชเชจเซเชเชฐเชซเซเชธเชจเชพ เชเชฆเชพเชนเชฐเชฃเชจเชพ เช เชฎเชฒเซเชเชฐเชฃเชจเซ เชเชฟเชนเซเชจเชฟเชค เชเชฐเซ เชเซ
@Autowired // or @Inject
@RestClient
MyRestClient restClient;
เชเชฎเชเชคเซเชฐเชฃ
REST เชเชจเซเชกเชชเซเชเชจเซเชเชจเซ เชเซเชฒ เชเชฐเซ เชเซ
System.out.println(
restClient.getSalutation());
mp-rest/url
REST เชเชจเซเชกเชชเซเชเชจเซเชเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ เชเซ
application.properties:
org.example.MyRestClient/mp-rest/url=
http://localhost:8081/myendpoint
เชชเชฐเชฟเชฃเชพเชฎเซ
เช เชฌเซเชฒเซเชเชฎเชพเช, เชฎเซเชเซเชฏเชคเซเชตเซ เชธเซเชชเซเชฐเชฟเชเช เชกเซเชตเชฒเชชเชฐเซเชธเชจเซ เชฒเชเซเชทเซเชฏเชฎเชพเช เชฐเชพเชเซเชจเซ, เช เชฎเซ เชเชพเชตเชพ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเชฟเชธ เชตเชฟเชเชธเชพเชตเชตเชพ เชฎเชพเชเซ เชเซเชตเชพเชฐเซเชเชธเชฎเชพเช เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชธเชพเชฅเซ เชธเซเชชเซเชฐเชฟเชเช API เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ เช เชจเซ เชชเชเซ เชคเซเชจเซ เชฎเซเชณ เชฆเซเชตเชฟเชธเชเชเซ เชเซเชกเชฎเชพเช เชเชฎเซเชชเชพเชเชฒ เชเชฐเชตเซเช เชเซ เชเซ เชธเซเชเชเชกเซ เชฎเซเชเชพเชฌเชพเชเชเซเชธ RAM เชฌเชเชพเชตเซ เชเซ เช เชจเซ เชคเซเชฎเชพเช เชฒเซเชจเซเช เชฅเชพเชฏ เชเซ เชคเซเชจเชพ เชชเชฐ เชเช เชเชกเชชเซ เชจเชเชฐ เชจเชพเชเซ. เชฎเชฟเชฒเชฟเชธเซเชเชจเซเชกเชจเซ เชฌเชพเชฌเชค.
เชเซเชฎ เชคเชฎเซ เชชเชนเซเชฒเชพเชฅเซ เช เชธเชฎเชเซ เชเชฏเชพ เชเซ, เชธเซเชชเซเชฐเชฟเชเช เช
เชจเซ เชฎเชพเชเชเซเชฐเซเชชเซเชฐเซเชซเชพเชเชฒ API เชฎเชพเชเซ เชธเชฎเชฐเซเชฅเชจ เชตเชฟเชถเซ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ เชคเซเชฎเช เช
เชจเซเชฏ เชเชฃเซ เชเชชเชฏเซเชเซ เชฎเชพเชนเชฟเชคเซ, เชเชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com