Naf*_*uji 5 messaging apache-kafka spring-kafka
由于 Kafka 具有基于主题的发布-订阅架构,我如何使用 Kafka 处理 Web 应用程序的一对一和组消息传递部分?我正在使用 SpringBoot+Angular 堆栈和 Docker Kafka 服务器。
我会在这里写另一个答案。根据我使用聊天服务的经验。您只需要一个主题来处理所有消息。使用精心设计的Message机身。
public class Message {
private String from; // user id
private String to; // user id or group id
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以为此主题创建大约 100 个分区,并创建两个消费者来使用它们(一开始为一个消费者创建 50 个分区)。然后,如果您的系统达到瓶颈,您可以更轻松地扩展 X 个消费者来处理负载。
如何在消费者中分发消息。我曾经将消息发送到移动应用程序,因此所有应用程序都与服务器具有长期存在的连接,并且服务器通过该通道将消息发送到应用程序。对于群组聊天,我创建了一个 Redis 缓存来存储群组中的所有活跃用户,这样我可以更轻松地获取属于该群组的用户,并向他们发送消息。
还有一点,Kafka无状态,意味着Kafka不与业务逻辑解耦,仅充当消息系统,传输消息。如果你把你的业务逻辑连接到Kafka,比如创建一个“一对一”主题并在完成后删除一些主题,Kafka会非常混乱。
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |