我是第一次在Quarkus中使用Mutiny进行react 式编程. 我想编写一个REST API来异步读取一个文件(Romance.txt),对其应用一些转换,并将转换后的文本异步写入一个新文件(RomanceSigned.txt).
我写的代码如下:
@ApplicationScoped
public class ReactiveService {
@Inject
Vertx vertx;
public Uni<Buffer> readFile () {
String fileName = new String("src/main/resources/Romance.txt");
Uni<Buffer> textReaded =
vertx.fileSystem().readFile(fileName);
textReaded.onItem()
.transform(item -> modifyText(item))
.subscribe()
.with(item -> writeRomanceOnNewFile(item));
return textReaded;
}
private Buffer modifyText (Buffer buffer) {
byte[] byteText = buffer.getBytes();
String stringText = new String(byteText);
String upperCaseStringText = stringText.toUpperCase();
String textModifiedAndSigned = upperCaseStringText.concat(" Hello World");
return Buffer.buffer(textModifiedAndSigned);
}
private void writeRomanceOnNewFile (Buffer item) {
vertx.fileSystem()
.writeFile("src/main/resources/RomanceSigned.txt", item)
.subscribe()
.with(it -> System.out.println("File Written!"));
}
}
我的问题是:
- 前面的代码是连接两个异步操作(读文件-写文件)的正确方式吗?
- 如果我想返回RomanceSigned.txt文件而不是像代码那样返回Romance.txt,我必须对前面的代码进行什么样的更改?