代码之家  ›  专栏  ›  技术社区  ›  forJ

带有多线程nodeJS服务器的Graphql订阅

  •  0
  • forJ  · 技术社区  · 6 年前

    我试图在多线程架构中创建一个graphql订阅服务。

    const SOMETHING_CHANGED_TOPIC = 'something_changed';
    
    export const resolvers = {
      Subscription: {
        somethingChanged: {
          subscribe: () => pubsub.asyncIterator(SOMETHING_CHANGED_TOPIC),
        },
      },
    }
    

    有多个相同的实例 nodeJS 服务器在我的docker集群上运行,我不希望每个实例在每次进行新的订阅发布时都向客户端发送订阅事件。我只希望有一个(当然更喜欢在集群之间进行负载均衡)负责向客户机发送订阅。

    当有多线程nodeJS后端时,如何确保只向客户端发送一个订阅事件?只有客户端过滤才有可能吗?i、 忽略已经到来的事件-但是我认为随着订阅量的增长这是一个可怕的资源浪费。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jacob Turley    6 年前

    在这种情况下,我会使用Redis作为PubSub,这样你就有了“一个真相的来源”。即 https://github.com/tomyitav/redis-messaging-manager

    我相信还有很多其他的图书馆也在做类似的事情