AMQP客户既可以是发布者又可以是订阅者?

时间:2011-04-12 19:53:10

标签: amqp

我刚刚开始研究AMQP,我想知道我是否会将它用于它不适合的东西。这就像我想做的事情:

  

ClientA确实关注它的业务   并将其状态发布给某些人   交换(如果我使用,请纠正我   错误的条款任何地方)

     

ClientB连接到同一个代理   并且“说出版商是什么   在这里发布?我选择你,   clientB。发生了什么事?“。

     

ClientA说:“我的foo是酒吧和我的baz   是真的“

     

ClientB说“好的。把你的巴兹设置为   假“

编辑一个不太抽象的例子“

  

ClientA会话/收听硬件   设备,比如视频投影仪。什么时候   ClientB上线,它想找到   任何投影机客户(如ClientA)   连接然后知道   投影仪的状态(是   灯开?)并且如果需要,也改变状态   (关闭灯泡)。所以ClientA是   保持一些状态(灯关闭)和   可以在要求时发送,并且   call也响应来自的命令   交换和转换并传递给他们   投影机(打开灯泡)。

2 个答案:

答案 0 :(得分:1)

我发现很难效仿你的例子,但听起来你希望这些A和B类型之间能够相互进行来回交谈。这是对的吗?

AMQP更适合异步消息传递,并且要添加您所描述的点对点样式要求您设置请求和回复队列,以便客户端可以发送和接收消息。客户端发布和使用消息当然是可能的。

答案 1 :(得分:1)

这是可能的,如果您的示例中的不同参与者是联网设备,那将是有意义的,因为AMQP将提供松散耦合的消息传递方式。

需要注意的一件事是客户B说“好的,设置一些属性”的最后一个抽象线。这听起来像一个子程序调用返回一些值然后下一步发生的情况。 AMQP当然可以模拟这种RPC,但是当进程可以发送消息而不必等待完成时,它可以更好地工作。

如果您的大部分消息都不涉及等待周转回复,那么AMQP听起来很适合您正在做的事情。但如果您的大部分需求都是RPC,那么它可能不是最佳选择。

如果您需要添加几千个投影仪,10,000个客户端B以及其他一些还需要交换状态的设备类型,那么在未来可能性的情况下,AMQP会非常闪耀。通过宣布新的交换,AMQP的松散耦合使得向代理添加其他应用程序变得容易。

相关问题