我有一个反应式核心WebClient要发布到给定的endpoint。有效负载是Job
对象的流量,内容类型是application/stream json flux jobFlux=flux。只是(新工作);
Mono<JsonNode> response = localEP.post().uri( "/dev/job" )
.contentType(MediaType.APPLICATION_STREAM_JSON)
.body( BodyInserters.fromObject(jobFlux))
.retrieve()
.bodyToMono( JsonNode.class );
在服务器端,我尝试了Spring控制器样式和Spring Web反应式FunctionHandler,以使用流量负载处理上述调用的负载。
@PostMapping(path = "/dev/job", consumes = MediaType.APPLICATION_STREAM_JSON_VALUE)
@ResponseStatus( HttpStatus.CREATED )
public Mono<Void> loadJobs (@RequestBody Flux<Job> jobs) {
return this.repository.create(jobs);
}
当实例化一个新对象时,域类Job
创建和标识:
public Job() {
UUID guid = UUID.randomUUID();
id = guid.toString();
title = "Random String";
}
仓库目前只是一个存根:
@Repository
public class DemoJobRepository implements ReactiveRepository<Job> {
private static Logger logger = LoggerFactory.getLogger(DemoJobRepository.class);
private final List<Job> jobs = Lists.newArrayList();
@Override
public Mono<Void> create(Publisher<Job> jobStream) {
return Flux.from(jobStream).doOnNext(jobs::add).then();
}
@Override
public Flux<Job> getAll() {
return Flux.fromIterable(jobs);
}
@Override
public Mono<Job> findById(String id) {
return null;
}
}
我没有看到客户端试图发送requestbody。我在客户机上调用了block
来获得结果,我看到客户机发送了请求,但是服务器endpoint总是看到一个空流量。请,任何帮助都非常感谢。
对于被动类型,在您订阅之前不会发生任何事情-构建被动管道不会执行它应该执行的操作,只有订阅它才会启动流程。
有几种订阅方式:
>
调用任何块
/收集
方法。这不仅订阅,而且返回期望值。
这两种选择都不应该在返回反应性类型的方法中进行,否则这将导致应用程序中出现严重问题。
我正在评估使用Spring Webflux,但我们必须支持期望Application/JSON,而不是Application/Stream+JSON的客户机。我不清楚Spring WebFlux如何在需要Application/JSON的客户机的情况下处理Flux的序列化。 如果一个Flux序列化为application/json,而不是application/stream+json,这是一个阻塞
问题内容: 我正在评估使用Spring Webflux,但我们必须支持期望使用application / json而不是application / stream + json的客户端。我不清楚在需要application / json的客户端中,Spring WebFlux如何处理序列化Flux。 如果将Flux序列化为application / json而不是application / stre
我有一个关于Spring WebFlux的问题。我想创建一个使用内容类型text/event-stream的反应endpoint。不是生产而是消费。我们的一个服务需要向另一个服务发送大量的小对象,我们认为这样流式传输可能是一个很好的解决方案。 流量是每1秒产生一个值的流。我遇到的问题是,WebClient完全读取发布服务器,然后将数据作为一个整体发送,而不是一个接一个地流式传输。我能用这个客户机或
但我只能得到: 当请求实体的内容类型不是application/x-www-form-urlencoded时,使用@FormParam 我的代码:
我有一个java应用程序(不是web),它定期在文件系统和控制台上记录数据。该应用程序构建于Java中,并使用log4j-1.2.17.jar进行日志记录。 我已经将java应用程序配置为将日志数据发送到Azure的application insights资源。 当我在非调试模式下执行代码时,应用程序无法将日志数据发送到azure Portal。请让我知道我缺少了什么,以便应用程序开始以正常模式(
问题内容: 为什么在下面的代码中将数据发送为JSON格式而不是? 问题答案: 因为您既未指定请求内容类型,也未指定正确的JSON请求。这是发送JSON请求的正确方法: 注意事项: 使用此方法将javascript对象转换为本地和内置于现代浏览器中的JSON字符串。如果要支持较旧的浏览器,则可能需要包含json2.js 使用属性指定请求内容类型,以便向服务器指示发送JSON请求的意图 该属性用于服务