我如何读取钥匙值对并订阅值更改-AKA最后一个值缓存



此处的用例是这样的:

  • 我有一个数据/价值出版商
  • 我有多个价值消费者(或订户),当他们开始时需要读/获取值,然后订阅后续更新

目标是让出版商和订户只做"一件"事情。

示例:发布者发布outside.temperature=28,多个订户会在该新信息上做出反应,例如打开加热器,发送一条短信,说" Bring Johns"并在某些监视器上更新一些图形。

我今天(工作)是Apache Activemq,带有队列,任何订户可以在其中query outside.temperature并让发布者(Re-)发送其最新值。答复发送给发送查询的消费者(回复到队列)。新值将发布给具有相同名称的主题(outside.temperature)。每次订户(重新)开始时,都会发生这种情况:查询当前状态,订阅更新。

这一切似乎都过于复杂,因为订户必须知道如何做两件事:

  • 知道如何要求一个值(队列和回复到队列),即民意调查
  • 知道如何订阅未来价值(主题),即订阅推送

出版商必须知道如何做两个思考:

  • 知道如何回复查询(队列),回答民意调查请求
  • 知道如何发布新值(主题),推新值

这里的目标是拥有一些中间件软件:

  • 保留(并坚持)键的最后已知值
  • 发布对该键的所有订户的更改,即PubSub
  • 将最新的已知价值(作为推动)发送到新的订户

这将降低发布者和订户的复杂性。

我一直在研究Redis来解决此问题,但是PubSub功能仅在上面的示例中取代了该主题,而不是在订户启动(和答案)上对当前价值进行轮询,即查询/队列部分。/p>

我一直在寻找Zookeeper,并且是手表,虽然它看起来会满足我的需求,但它过于复杂,需要很多代码。

我一直在看Ømq(Zeromq),并看到了最后一个值缓存,LVC。这里的建议是在发布者和订阅者之间创建代理。

兔子有LVC扩展,例如https://github.com/simonmacmullen/rabbitmq-lvc-plugin

我的问题是,是否还有其他一些牙线产品可用于内置的最后一个值缓存,而不需要添加自定义代理或插件?

有几种方法可以通过Zeromq进行操作;阅读此http://zguide.zeromq.org/page:all#last-value-caching for简单模式,然后http://zguide.seromq.org/page/page:all#rel-publish-publish-publish-subscripe-clone-pattern-pate-clone-pattern-是一种更复杂的方法。

请注意,两种方法都在中间使用一件;但是,您只需在发布者中就可以使第一个LVC模式工作。

最新更新