У меня есть следующий сервер RSocket
@Log4j2
public class NativeRsocketServerFnF {
public static void main(String[] args) {
RSocketFactory.receive()
.frameDecoder(ZERO_COPY)
.errorConsumer(log::error)
.acceptor((setup, clientHandleRsocket) -> {
return Mono.just(
new AbstractRSocket() {
@Override
public Mono<Void> fireAndForget(Payload payload) {
CharSequence message = payload.data().readCharSequence(payload.data().readableBytes(), forName("UTF-8"));
payload.release();
log.info("> from client: {}", message);
return Mono.empty();
}
}
);
})
.transport(TcpServerTransport.create(8000))
.start()
.block()
.onClose()
.block();
}
}
и следующий клиент RSocket
@Log4j2
public class NativeRsocketClientFnF {
public static void main(String[] args) {
RSocketFactory.connect()
.frameDecoder(ZERO_COPY)
.errorConsumer(log::error)
.transport(TcpClientTransport.create(8000))
.start()
.flatMap(rSocket -> rSocket.fireAndForget(DefaultPayload.create("ping")))
.block();
}
}
Как вы видите, я пытаюсь отправить "ping" в качестве данных полезной нагрузки от клиента кserver
Когда я запускаю сервер и запускаю клиент в первый раз, я вижу > from client: ping
Если я перезапускаю клиент снова, я не вижу никаких сообщений на сервере. Точка останова даже не попадает на сервер
Насколько я понимаю, Fire и Forget просто отправляют данные и не удосуживаются ждать и посмотреть, успешно ли сервер обрабатывает данные, но в моем случаеСам сервер не получает данные о последующих запусках клиента (как новых клиентов)
Есть ли что-то, чего мне не хватает?
Я использую версию 1.0.0-RC5
из rsocket-core
&rsocket-transport-netty
ОС: Ubuntu 16.04