Spring boot REST API ADDおよびGETメソッドを設計しました
@RestController("ProductV1Controller")
public class ProductController
{
private final IProductProducer _productProducer;
public ProductController(IProductProducer productProducer) {
_productProducer = productProducer;}
@PostMapping()
void AddProduct(@Valid @RequestBody ProductViewModel product) {
_productProducer.AddProduct(product);
}
@GetMapping()
List<ProductViewModel> Products() {
var test = _productProducer.GetProducts();
return _productProducer.GetProducts();
}
}
@Service
public class ProductProducer implements IProductProducer{
private final KafkaTemplate<String, Object> _template;
public ProductProducer(KafkaTemplate<String, Object> _template) {
this._template = _template;
}
@Override
public List<ProductViewModel> GetProducts() {
this._template.send(ProductTopicConstants.GET_PRODUCTS,null);
return List.of(new ProductViewModel("","",0,"")); --> Need to return the value from the kafka
}
@Override
public void AddProduct(ProductViewModel product) {
this._template.send(ProductTopicConstants.ADD_PRODUCT, product);
}
}
@KafkaListener(id = ProductTopicConstants.GET_PRODUCTS, topics = ProductTopicConstants.GET_PRODUCTS)
public List<Product> GetProducts() {
return _productRepository.findAll();
}
サービス層GetProducts()
では、から来ているプロジェクトのリストを返す必要があります_productRepository.findAll();
Spring kafkaでREST APIを実行するための最良のアプローチは何ですか。
ReplyingKafkaTemplate
結果を残りのコントローラーに返すには、a を使用する必要があります。
ReplyingKafkaTemplateを参照してください。
バージョン2.1.3では、要求/応答のセマンティクスを提供するKafkaTemplateのサブクラスが導入されました。このクラスはReplyingKafkaTemplateという名前で、1つのメソッドがあります(スーパークラスのメソッドに加えて)。
結果は、結果(またはタイムアウトの場合は例外)が非同期で入力されるListenableFutureです。結果には、KafkaTemplate.send()を呼び出した結果であるsendFutureプロパティもあります。このフューチャーを使用して、送信操作の結果を判別できます。
ドキュメントには例があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加