【问题标题】:Purpose of message brokers in websocket communication?websocket通信中消息代理的目的?
【发布时间】:2021-09-21 01:41:08
【问题描述】:

我正在实施 websockets 以进行协作编辑。为此,我正在使用 Spring 5 websockets。

最简单的例子是,两个 Web 客户端通过 websockets 连接到我的服务器。用户 1 执行了一些创建事件并将此事件信息发送到我的服务器的操作。现在必须将此事件发送给用户 2,以便他们可以进行适当的 UI 更改。

我有两个问题:

  • 由于此服务器将运行多个实例,因此用户 1 可能会连接到服务器 1,而用户 2 可能会连接到服务器 2。在这种情况下,用户 1 所做的更改将如何传递给用户 2?
  • 另外,我关注了this tutorial。本教程是在没有任何消息代理的情况下实现 websockets 一些教程另外使用消息代理(主要是 amqp)。在这种情况下,消息代理的意义何在?是否只是因为可能有太多消息而服务器会一一处理?

只是想补充一点:我们无法在客户端使用点对点连接,因为服务器需要存储数据以备将来使用。

【问题讨论】:

    标签: java spring websocket spring-websocket


    【解决方案1】:

    默认情况下,spring 5 在内存中为所有连接使用简单的 stomp 代理 如果你想水平扩展,你需要一个消息代理,比如 RabbitMQ 等。 让我们想象一下 user1 和 user2 连接到 server1 并且 user3 连接到 server2 的情况。当 user1 向 user3 发送消息时,它不会知道 user3,因为 server1 不知道 user3。 如果我们有经纪人,这个问题将得到解决。 因此,需要可扩展性来处理负载,并且在生产环境中,您将始终拥有超过 1 个实例以实现高可用性和容错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 2011-09-26
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2019-03-04
      • 2015-06-18
      相关资源
      最近更新 更多