我正在使用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。
任何帮助将不胜感激。
答案 0 :(得分:1)
RabbitMQ本机不支持STOMP,但是它具有STOMP插件。 Kafka不支持STOMP。