使用Kafka的STOMP协议实现

时间:2019-04-25 14:17:12

标签: java websocket apache-kafka stomp spring-kafka

我正在使用websocket协议和STOMP作为消息协议开发用于Web平台的聊天模块。

这是我第一次使用任何消息代理,而Kafka是该公司(我正在为其工作的)网络平台上使用的平台,用于其他模块。在我刚开始时曾与RabbitMQ一起工作过,现在我不得不切换到Kafka。我在RabbitMQ的网站上看到了整篇有关如何使用STOMP的文章,但是在Kafka的官方网站上却没有这样的内容。

但是我浏览了其他一些资源,许多教程,但找不到与Kafka一起使用STOMP协议的任何相关信息,这促使我问是否可能?

这是我的websocket配置类:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/topic");

//Here's the line I wrote to use Kafka as a MB, but doesn't work        
registry.enableStompBrokerRelay("/topic").setRelayHost("localhost").setRelayPort(9092);

启动Kafka,然后运行我的Java Spring应用程序后,我从java.io.IOException得到了“对等连接重置”,如果一切正常,则不应该抛出该异常。

我正在使用Kakfa的2.2.0版本,Zookeeper的3.4.14版本,并使用STS 3作为我的IDE。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

RabbitMQ本机不支持STOMP,但是它具有STOMP插件。 Kafka不支持STOMP。