我正在尝试将jaxb对象封送到xml字符串中,然后使用akka流将其写入文件,但是在执行创建后文件是空的。
我已经检查过封送处理方法,但是没有流,它工作得很好。请帮助我理解哪里是错误。
这里是我的测试方法:
@Test
public void singlePojoTest() {
ActorSystem actor = ActorSystem.create();
Materializer materializer = ActorMaterializer.create(actor);
//Creating and initializing of JAXB POJO
AuditFile.Header header = new AuditFile.Header();
initHeader(header,calendar);
// useMarshaller - is converting object to xml String
Flow<Object,String,NotUsed> flow = Flow.of(Object.class).map(o -> useMarshaller(o));
Source<String,NotUsed> source = Source.single((Object)header).via(flow);
CompletionStage<IOResult> result = source.map(string -> ByteString.fromString(string)).runWith(FileIO.toPath(Paths.get("test.txt")),materializer);
actor.terminate();
}
我期望在执行带有封送处理的xml的方法文件之后,将创建.
发布于 2019-09-28 09:31:19
在启动流后立即调用actor.terminate();
,而不等待流完成。
您必须“阻止”测试线程,并允许异步流处理在终止参与者系统之前完成。
在关闭参与者系统之前应用以下操作。
result.toCompletableFuture().get();
https://stackoverflow.com/questions/58137700
复制相似问题