0

我正在从 DB2/400 表中获取所有行并在响应式请求中返回它们

我的服务看起来像这样

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 流。

这是我第一次尝试编写反应式应用程序。

4

1 回答 1

0

您的应用程序中没有响应式 JDBC 驱动程序,对吧?然后 streamAll() 将阻塞。它会起作用,但它有点毫无意义,因为阻塞操作会以这种方式阻塞工作线程。

于 2020-05-09T11:05:33.777 回答