繁体   English   中英

使用 Quarkus 将消息从 Kafka Streams 发送到 WebSocket

[英]Sending message from Kafka Streams to a WebSocket with Quarkus

所以我不知道该怎么做。 我已经使用 Quarkus 和 MicroProfile Reactive Messaging 框架和 javax.websocket 库的东西完成了这项工作,但我不确定如何将其移植到使用 Kafka Streams。 使用 MP Reactive Messaging,我可以在我的其他类之一的通道上使用 @Outgoing 注释,然后使用我的 WebSocket 服务,我可以像这样从该通道注入。

@ServerEndpoint("/validatedmessages")
@ApplicationScoped
public class WebSocket {

@Inject @Channel("post-final-check") Flowable<CustomMessage> finalizedMessages;
//private Jsonb jsonb;
ObjectMapper obj = new ObjectMapper(); 

private static final Logger LOGGER = Logger.getLogger(WebSocket.class);

private List<Session> sessions = new CopyOnWriteArrayList<>();
private Disposable subscription;

@OnOpen
public void onOpen(Session session) {
    sessions.add(session);
}

@OnClose
public void onClose(Session session) {
    sessions.remove(session);
}

@PostConstruct
public void subscribe() {
    subscription = finalizedMessages.subscribe(message -> sessions.forEach(session -> {
        try {
            write(session, message);
        } catch (JsonProcessingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }));
}

@PreDestroy
public void cleanup() throws Exception {
    subscription.dispose();
    //jsonb.close();
}

卡夫卡流可以做到这一点吗?

您将 Kafka Streams 的 output 存储在哪里? 在主题或 KTable 中?

如果是第一个,那么您可以注入 Publisher 或使用 @Incoming(topic)。 否则,您需要使用 InteractiveQueries,请参见此处的示例:

https://quarkus.io/guides/kafka-streams#interactive-queries

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM