首页 > 解决方案 > Quarkus 仅传输数据字段上的 SSE 有效负载反应?

问题描述

我的示例代码:

@GET
@Path("/reactive")
@Produces(MediaType.SERVER_SENT_EVENTS)
@RestSseElementType(MediaType.APPLICATION_JSON)
public Multi<OutboundSseEvent> reactive() {

  return Multi.createFrom().ticks().every(Duration.ofSeconds(1))
                .onItem().transform(n -> creaMessaggioSse(n,"SseReactive"));
}

private OutboundSseEvent creaMessaggioSse(Long evt, String nome){

  return sse.newEventBuilder()
                .data("Evento-"+evt)
                .id("Id-"+evt)
                .name(nome)
                .build();

}

我的输出是:

data:{"name":"SseReactive","comment":null,"id":"Id-0","type":"java.lang.String","genericType":"java.lang.String","mediaType":{"type":"text","subtype":"plain","parameters":{},"wildcardType":false,"wildcardSubtype":false},"mediaTypeSet":false,"data":"Evento-0","reconnectDelay":-1,"escape":false,"reconnectDelaySet":false}``

代替

id:Id-1
event:SseStandard
data:Evento-1

那是因为执行的代码是(通过debug发现的)

PublisherResponseHandler.onNext(Object item) {
            OutboundSseEventImpl event = new OutboundSseEventImpl.BuilderImpl().data(item).build();
            SseUtil.send(requestContext, event)

所以“发送”事件只有数据。

我哪里错了??

标签: quarkus

解决方案


推荐阅读