我有一个正在运行的系统,它使用基于Agatha-RRSL的请求 - 响应接口处理短期和长期运行的操作。
现在我们想要改变一点,以便能够通过网站以Json格式发送请求,所以我正在尝试许多支持Json的REST服务器实现。 REST服务器将是Topshelf处理的一个模块或“搁置”,另一个模块将是处理模块和最后一个NoSQL数据库运行模块。
在REST和处理模块之间进行交谈我正在考虑使用servicebus,但我们有两种类型的请求:在1-2秒内执行工作的短请求和在1分钟内工作的长请求。
servicebus是否适合这项工作?我正在考虑为长时间运行的op返回一个“响应”,其中包含一个令牌,可用于请求操作状态和结果以及新请求。问题是大部分请求必须像同步请求一样使用才能完成http响应。
当我必须返回庞大的对象列表时,我认为我的响应大小(在MSMQ消息传输上)也存在问题
任何提示?
答案 0 :(得分:1)
NServiceBus不适合请求 - 响应消息传递模式。它更适合异步发布 - 订阅。
修改:为了实现一种请求响应,您需要在两个方向上发送消息,但需要包含三个逻辑步骤:
由于这些步骤中的每一步都是以隔离方式和异步方式进行的,因此在客户端发送请求和接收响应之间不会强制执行有意义的SLA或超时。但这适用于大型处理工作,可能需要几分钟才能完成。
此外,两个消息中都需要存在可用于将请求与响应联系起来的公共值。否则,客户端可以发送多个请求,并接收多个响应,并且不知道哪个响应针对哪个请求。
所以你可以用NServiceBus做到这一点,但需要更多的思考。
NServiceBus也使用MSMQ作为底层传输,而不是http。