编辑:基本要求是我有多个Web服务服务器进程从Web服务客户端接收请求,执行一些处理(我想使用工作队列的处理方式),然后将结果返回给相应的客户端。但是,我希望能够在超时时间内等待此队列的使用者接收已发布的请求。如果该超时时间到期,那么我希望原始的Web服务进程收到此通知,以便可以将其反馈给客户端。
我正在尝试实现一种“发布TTL”,通过该方式,如果消息是不正确的,则通知始发发布者(仅)。(我希望发布者知道在一定的超时时间内是否没有使用邮件)。
我有一个解决方案,如下所示:
因此,这解决了我的要求,因为只有发布消息的发布者才会将DLX消息路由到该消息。
但是,这似乎有点令人费解,而且效率低下,因为所有消息都会发生通配符路由(那些死信除外),通常不应该发生这种情况。
这必须是一个普遍的要求-我的解决方案是否可取?有没有更有效的方法可以做到这一点?还是我走在正确的轨道上?
这是显示我的设计的图:
编辑: 在下图中,DLX实际上应该连接到队列,而不是Exchange!
谢谢!
是的,所以事实证明该解决方案是非常有效的。使用通配符绑定密钥和主题交换时,可能会遇到很小的延迟问题,但可能并没有真正引起我们关注的地方。
邮件列表中的一则评论是,由于这是一个基于RPC的系统,每个发布者都已经定义了一个唯一的响应队列,因此可以将该队列绑定到DLX(而不是创建一个新的,每个唯一的队列)。发布商),从而获得“有效”响应和带有死信的消息,这些消息均传递到同一队列中。
就我而言,我想将这种“发布TTL”功能包装在通用发布商中,因此提及响应队列没有任何意义-尽管我的解决方案的效率可能略低,因为还有更多的回合,如果发生死信,请跳闸。
如果您对Rabbit的家伙用于主题路由的机制感兴趣,可以查看以下网址 :http : //www.rabbitmq.com/blog/2010/09/14/very-fast-and-scalable-topic- routing-part-1 / http://www.rabbitmq.com/blog/2011/03/28/very-fast-and-scalable-topic-routing-part-2/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句