sse не отправляет все сообщения
Я использую spring boot 2.0.4
а также reactor-netty
а также reactor-rabbitmq-1.0.0.M2
Для реализации простого сервера SSE.
По какой-то причине, как клиент, я не получаю все отправленные сообщения.
Пример реализации:
@RestController
@RequestMapping("event")
@Slf4j
@CrossOrigin(origins = "*")
public class ExampleController {
EventsService eventsService
...
@GetMapping(value = "/{id}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ExampleEvent> exampleEvent((@PathVariable("id") int id) {
return eventsService.dispatchEvents().log();
}
}
куда EventsService
является:
@Service
@Slf4j
public class EventsService {
//reactor.rabbitmq.Receiver
private final Receiver receiver;
private ObjectMapper objectMapper
public Flux<ExampleEvent> dispatchEvents() {
return this.receiver.consumeAutoAck(queue)
.flatMap(msg -> {
final ExampleEvent event = objectMapper.readValue(msg.getBody(), ExampleEvent.class);
if(event != null) {
return Mono.just(event);
}
return Mono.error(new RuntimeException("Null value!"));
)
}
Receiver Bean
@Bean
public Receiver receiver(ConnectionFactory connectionFactory){
ReceiverOptions options = new ReceiverOptions();
options.connectionFactory(connectionFactory);
return ReactorRabbitMq.createReceiver(options);
}
куда ConnectionFactory
установлен для использования Nio()
Теперь мои журналы полны reactor.Flux.OnAssembly.5 : | onNext
Объекты событий Но по какой-то причине, как в Chrome при вставке URL, так и в Моем клиенте (Angular) я не получаю большинство сообщений (но получаю некоторые, что является странной частью).
***** ОБНОВИТЬ ******
Каждые несколько сообщений я вижу логи (даже когда не отключаюсь)
2018-08-06 18: 44: 33.315 INFO 22420 --- [ctor-http-nio-4] реактор. Флюс. На сборке.23: | cancel() 2018-08-06 18:44:33.315 INFO 22420 --- [ctor-http-nio-4] реактор.rabbitmq.Receiver: отмена потребителя amq.ctag-lkjfsdfsdlfkdsjlk, потребляющего из frame-update.queue 2018-08-06 18:44:33.357 ОШИБКА 22420 --- [ctor-http-nio-4] oswsadapter.HttpWebHandlerAdapter: необработанный сбой: установленное соединение было прервано программным обеспечением на вашем хост-компьютере, ответ уже установлен (status=null)`