Jakarta ee 如何在每次数据库更改时发送SSE
我有一个控制器:Jakarta ee 如何在每次数据库更改时发送SSE,jakarta-ee,server-sent-events,Jakarta Ee,Server Sent Events,我有一个控制器: @GET @Path("/info") @Produces(SseFeature.SERVER_SENT_EVENTS) public EventOutput findInfoFromDb() { new Thread(new Runnable() { @Override public void run() { try
@GET
@Path("/info")
@Produces(SseFeature.SERVER_SENT_EVENTS)
public EventOutput findInfoFromDb() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
final OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder();
Optional objectDTO = finder.findObject();
eventBuilder.name("object");
eventBuilder.mediaType(MediaType.APPLICATION_JSON_TYPE);
eventBuilder.data(ObjectDTO.class, objectDTO);
OutboundEvent event = eventBuilder.build();
eventOutput.write(event);
} catch (InterruptedException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} }).start();
return eventOutput;
}
我面临的问题是,每次我在DB中更改某个内容时,都会得到几个响应。如何在aim中比较从DB获得的这些对象以仅显示更改的对象,而不刷新页面 据我所知,你应该收到第一个事件,并停止。您是否应该在每次数据库修改时公开eventOutput以触发,而不是使用线程?您能给我举一个您想要的示例吗?