Я знаю, что Publisher
не должен публиковаться одновременно, но если я использую Flux#create(FluxSink)
, могу ли я безопасно вызвать FluxSink#next
одновременно?
Другими словами, есть ли у Spring внутренняя магия, обеспечивающая правильное последовательное соединение?публикация событий, даже если FluxSink#next
вызывается одновременно?
public class FluxTest {
private final Map<String, FluxSink<Item>> sinks = new ConcurrentHashMap<>();
// Store a new sink for the given ID
public void start(String id) {
Flux.create(sink -> sinks.put(id, sink));
}
// Called from different threads
public void publish(String id, Item item) {
sinks.get(id).next(item); //<----------- Is this safe??
}
}
Это звучит для меня как , этот абзац в официальном руководстве указывает, что вышеприведенное действительнобезопасно, но я не очень уверен в своем понимании.
create
- это более продвинутая форма программного создания Flux, которая подходит для нескольких выбросов за раунд, даже из нескольких потоков.