GraphQL 进阶: 使用RabbitMQ作为PubSub后端实现GraphQL订阅

这篇短文源于解决版本兼容性问题. graphql-rabbitmq-subscriptions 这项目已经半年没有Commit了, 和最新的 graphql-subscriptions 有兼容性问题. 最新的 graphql-subscriptions 的GraphQL订阅使用了 AsyncIterator, PubSubEngine增加了一个新的接口asyncIterator, 如下:

export interface PubSubEngine {
  publish(triggerName: string, payload: any): boolean;
  subscribe(triggerName: string, onMessage: Function, options: Object): Promise<number>;
  unsubscribe(subId: number): any;
  asyncIterator<T>(triggers: string | string[]): AsyncIterator<T>;
}

如何运行

clipboard.png

左边开两个GraphiQL的窗口, 右侧登录 rabbitmqadmin 图形管理界面. http://localhost:15672, 找到下面这个Exchange:

clipboard.png

点击进入 http://localhost:15672/#/exch...

然后就可以这样发消息了

clipboard.png

Demo

顺带发一个能跑的DEMO: https://github.com/developerw...

说明

这里是修改的版本: https://github.com/developerw...graphql-rabbitmq-subscriptions 做了修改, 使其支持如下接口:

asyncIterator<T>(triggers: string | string[]): AsyncIterator<T>;

RabbitMQ 默认安装, 不做任何修改. Ubuntu 下的安装命令为 apt-get install rabbitmq-server

Github Issue:
https://github.com/cdmbase/gr...

变更:

2017-09-09:
1.https://github.com/developerw...
使用 rabbitmq-pub-subRabbitMqSingletonConnectionFactory替换RabbitMqConnectionFactory,否则不会重用连接, 并且创建生大量的Queue
clipboard.png

2017-09-10:
现在graphql-rabbitmq-subscriptions包的兼容性已经修复, 直接yarn add graphql-rabbitmq-subscriptions即可.

Pull Request: https://github.com/cdmbase/gr...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值