Liczba wywołań REST API

0

Cześć, mam kontroler jak poniżej. Problem polega na zliczeniu ilości wywołań api dla kazdego produktu oddzielnie w danej sesji, tj. produkt/1, produkt/2.
Próbowałem wyciągnać te dane z actuator/metrics/http.server.requests, aczkolwiek tutaj zliczane są wywołania wszytskich adresów. Docelowo potrzebuje metody, która w kontrolerze zwróci ilość wywołań danego api w zalezności od id.

@RestController
@RequestMapping("")
public class ProductController {
private ProductService productService;

@Autowired
public ProductController(ProductService productService) {
    this.productService = productService;
}

@GetMapping("/product/{id}")
public Product findByid(@PathVariable Long id){
    return productService.findById(id);
}

@PatchMapping("/product/{id}")
public Product getProductWithDiscountById(@PathVariable Long id){
    return productService.changePriceProductById(id);
}

}

screenshot-20201127004117.png

0

A po restarcie aplikacji ten counter ma się zerować, czy nie? Jeśli tak, to może utworzyć gdzieś pomocniczą mapę, która jako klucz by miała id produktu wywołanego, a jej wartość by była inkrementowana przy każdym wywołaniu requesta (trzeba będzie ogarnąć to wielowątkowo)? Jeśli nie - to taką mapę może by przedstawić jako osobny "byt" w bazie danych? Ogólnie też, takie statsy chcesz gromadzić jedzynie dla produktu czy dla różnych modeli? JEśli dla różnych, to wtedy ta mapa jeszcze by zawierała w sobie informację co to za model. Takie są moje propozycje.

2

Samo sie nie zrobi. Nie ma takiej metryki out-of-the-box, musisz to sobie samodzielnie zliczać, innej drogi nie ma. Przecież tych ID może być milion. Jak wyobrażasz sobie jakieś automatyczne prowadzenie takich statystyk? o_O

1 użytkowników online, w tym zalogowanych: 0, gości: 1