Java 在Quarkus中异步持久化数据
我正在尝试使用Quarkus和Hibernate Panache异步持久化一些数据:Java 在Quarkus中异步持久化数据,java,asynchronous,quarkus,quarkus-panache,Java,Asynchronous,Quarkus,Quarkus Panache,我正在尝试使用Quarkus和Hibernate Panache异步持久化一些数据: Executors.newFixedThreadPool(1).execute(new Runnable() { @Override @Transactional // I need a transaction to persist the data public void run() { List<List<String&
Executors.newFixedThreadPool(1).execute(new Runnable() {
@Override
@Transactional // I need a transaction to persist the data
public void run() {
List<List<String>> myData = myCsvParser.parse(data);
myRepository.importData(myData, myID);
myBusinessService.doBusinessLogic(myID);
}
这里有一个复制机项目:
提前谢谢 在Quarkus Zulip聊天中,在Martin Kouba@martunek(et all)的帮助下,我使其工作如下:
@Dependent
public class MyTask implements Runnable {
@Inject
private MyParser myParser;
@Inject
private MyBusinessService myBusinessService;
@Inject
private MyRepository myRepository;
private String csvData;
private String myId;
@Override
@Transactional
@ActivateRequestContext
public void run() {
List<List<String>> myData = csvParser.parse(csvData);
myRepository.importData(myData, myId);
myBusinessService.myBusinessMethod(myId);
}
public void setCsvData(String csvData) {
this.csvData = csvData;
}
public void setMyId(String myId) {
this.myId = myId;
}
}
ExecutorService executor = Executors.newFixedThreadPool(1);
MyTask myTask = Arc.container().instance(MyTask.class).get();
myTask.setCsvData(csvData);
myTask.setMyId(myId);
executor.execute(myTask);
ExecutorService executor = Executors.newFixedThreadPool(1);
MyTask myTask = Arc.container().instance(MyTask.class).get();
myTask.setCsvData(csvData);
myTask.setMyId(myId);
executor.execute(myTask);