Можно ли использовать DB2 / 400 Panache Stream с Mutiny Multi - PullRequest
0 голосов
/ 08 мая 2020

Я беру все строки из таблицы 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 метод. Я пытаюсь понять, могу ли я обернуть поток Panache при использовании потока с Multi.

Это моя первая попытка написать реактивное приложение.

1 Ответ

0 голосов
/ 09 мая 2020

В вашем приложении нет реактивного драйвера JDB C, верно? Тогда streamAll () заблокируется. Это сработает, но это бессмысленно, потому что операция блокировки таким образом заблокирует рабочий поток.

...