使用消息传递进行写入和读取

时间:2009-09-29 00:46:10

标签: message-queue messaging stomp

我来自网络背景,我只需处理HTTP,请原谅我的无知。

我有一个应用程序,其中客户端侦听使用stomp的消息队列中的更改。以前,客户端只需要收听相关频道的消息,告诉他们服务器上的更改并相应地更新自己。简单的东西。

现在需要客户端能够编辑数据并将这些更改推送回服务器。服务器上的数据已经通过休息资源公开了,所以我首先想到的是让REST发出更改服务器上数据的请求,但后来我开始怀疑是否可以使用消息传递找到解决方案。我可以打开另一个客户端可以发布更改的频道,服务器可以订阅该频道并相应地更新自己。实现这一点显然很简单,但我希望能够提前向我指出一些潜在的陷阱。

我熟悉REST,所以我想在REST的上下文中提出一些问题:

  • 我是否会为每个资源将一组队列映射到REST / CRUD谓词,即itemPostQueue,itemPutQueue,itemDeleteQueue?
  • GET如何使用队列请求数据读取?
  • 我用什么方法来取代我的状态代码机制来捕捉问题,或者我只是以某种方式触发并忘记(gulp)或使用错误/收据标题?

任何答案和建议将不胜感激。

此致

克里斯

1 个答案:

答案 0 :(得分:0)

虽然我不清楚为什么必须在这里使用消息,但有些想法:

如果您正在使用某种具有保证语义和内置传递的队列,那么请继续使用该机制。对于购物车示例,您可以在线路上添加AddItem消息,并且您信任基础架构将其一次性传递到服务器。

消息队列中没有直接的 GET 概念。你可以用一对消息模拟它,我发给你一个请求,然后你回复给我一个回复。这很像RPC,但更进一步解耦。所以我发送了一个PublishCart请求,稍后,服务器会在客户端正在监听的频道上发送CartContents消息。

状态代码更复杂,通常分为两个阵营。首先是实际的队列库消息 - 就像处理任何正常的系统消息一样处理它们。其次,您可能有自己的消息,想要在链中的某个位置发出故障信号。

消息传递确实做的一件事是显着地解耦你的应用程序。与HTTP不同,您知道发生了什么事情,有了队列,您就会向某人发送一封信。它可能会到达那里。邮递员可能会把它放在雪地里。狗可能会吃它。如果您在某段时间内没有得到回复,您可以尝试其他方式联系您的亲属,或者撤回类比,联系服务器。监视队列基础结构的健康状况和队列的深度等等变得更加重要,因为它们是您现在依赖的管道。

祝你好运