Spring Kafka的Spring Boot Rest API

圣杰西(San Jaisy):

我设计了一个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结果返回到rest控制器。

参见ReplyingKafkaTemplate

2.1.3版引入了KafkaTemplate的子类来提供请求/回复语义。该类名为ReplyingKafkaTemplate,并且具有一个方法(超类中的方法除外)。

结果是一个ListenableFuture,它以结果(或一个超时异常)进行异步填充。结果还具有sendFuture属性,该属性是调用KafkaTemplate.send()的结果。您可以使用此将来确定发送操作的结果。

该文档有一个示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章