尝试使用springcloudstream和函数(供应商)模型将对象发布到kafka

omqzjyyz  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(324)

我正在尝试使用带有函数模型的spring云流将对象发布到kafka主题。下面是我的需求的代码片段。

控制器:

@PostMapping(path = "/publish")
public void publish(@RequestBody SampleObject obj) {
    service.publish(obj);
    log.info("Published Data {} successfully", obj.toString());
}

服务等级:

@Bean
public Supplier<Object> publish(SampleObject obj) {
    return () -> {
        log.info("posting data to kafka topic {}", obj);
        return obj;
    };
}

我的要求是我需要从控制器发送请求对象到服务,并将该对象发布到kafka主题。
注意:我不想使用不推荐的模型。

iyzzxitl

iyzzxitl1#

你可以考虑使用 StreamBridge .
裁判:https://docs.spring.io/spring-cloud-stream/docs/3.0.10.release/reference/html/spring-cloud-stream.html#_using_streambridge

@SpringBootApplication
@Controller
public class WebSourceApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebSourceApplication.class, "--spring.cloud.stream.source=toStream");
    }

    @Autowired
    private StreamBridge streamBridge;

    @RequestMapping
    @ResponseStatus(HttpStatus.ACCEPTED)
    public void delegateToSupplier(@RequestBody String body) {
        System.out.println("Sending " + body);
        streamBridge.send("toStream-out-0", body);
    }
}

相关问题