DB2/400 Panache Stream 可以与 Mutiny Multi 一起使用吗
Can a DB2/400 Panache Stream be used with a Mutiny Multi
我正在从 DB2/400 table 中获取所有行并在响应式请求中返回它们
我的服务是这样的
package example.y2.api.service.impl;
import java.util.stream.Stream;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import example.y2.api.entity.impl.Y2ModelListEntry;
import example.y2.api.mapper.CoreMapper;
import example.y2.api.model.impl.ObjectListEntry;
import io.smallrye.mutiny.Multi;
@ApplicationScoped
public class Y2ListServiceAsync {
@Inject
CoreMapper mapper;
public Multi<ObjectListEntry> asyncAll() {
return Multi.createFrom().items(getStream()).map(this::map);
}
private Stream<Y2ModelListEntry> getStream() {
return Y2ModelListEntry.streamAll();
}
private ObjectListEntry map(Y2ModelListEntry y) {
ObjectListEntry listEntry = new ObjectListEntry();
mapper.directMap(listEntry, y);
return listEntry;
}
}
Panache 流应该包装在@Transactional 方法中。我试图了解在将流与 Multi 一起使用时是否可以包装 Panache 流。
这是我第一次尝试编写响应式应用程序。
您的应用中没有响应式 JDBC 驱动程序,对吗?然后 streamAll() 将阻塞。它可以工作,但有点毫无意义,因为阻塞操作将以这种方式阻塞工作线程。
我正在从 DB2/400 table 中获取所有行并在响应式请求中返回它们
我的服务是这样的
package example.y2.api.service.impl;
import java.util.stream.Stream;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import example.y2.api.entity.impl.Y2ModelListEntry;
import example.y2.api.mapper.CoreMapper;
import example.y2.api.model.impl.ObjectListEntry;
import io.smallrye.mutiny.Multi;
@ApplicationScoped
public class Y2ListServiceAsync {
@Inject
CoreMapper mapper;
public Multi<ObjectListEntry> asyncAll() {
return Multi.createFrom().items(getStream()).map(this::map);
}
private Stream<Y2ModelListEntry> getStream() {
return Y2ModelListEntry.streamAll();
}
private ObjectListEntry map(Y2ModelListEntry y) {
ObjectListEntry listEntry = new ObjectListEntry();
mapper.directMap(listEntry, y);
return listEntry;
}
}
Panache 流应该包装在@Transactional 方法中。我试图了解在将流与 Multi 一起使用时是否可以包装 Panache 流。
这是我第一次尝试编写响应式应用程序。
您的应用中没有响应式 JDBC 驱动程序,对吗?然后 streamAll() 将阻塞。它可以工作,但有点毫无意义,因为阻塞操作将以这种方式阻塞工作线程。