场景:
当前,我们在这种模式下具有多层体系结构
DBLayer => Tasks to DB
SouthBound => Talks to other devices like router/controller
SrvcLayer => Talks to both SouthBound and DBLayer
UILayer => Talks to UI and SrvcLayer
该应用程序基于Spring 4.2, Java 8, MongoDB
构建。
要求:
我们需要将SouthBound分离为一个单独的应用程序,或者可以说微服务。
问题:
我们正在考虑2种方法
在SouthBound中将服务公开为REST API,并在SrvcLayer中使用它们。 它将增加一些延迟问题,并且还需要弄清楚安全性部分。
使用RabbitMQ之类的消息队列。但是这些调用必须是同步的。所以我不确定RabbitMQ是否会帮助我们。
哪种方法合适。 有关如何构建此用例的其他建议。
答案 0 :(得分:1)
在我们的应用程序中,我们具有REST API来传达UI <->后端部分又通过AMQP连接起来。
顺便说一句RabbitMQ似乎有一个异步支持RabbitMQ asynchronous support,所以这就足够了。
RabbitMQ仍可以进行同步工作(Is it appropriate to use message queues for synchronous rpc calls via ajax,https://www.rabbitmq.com/tutorials/tutorial-six-java.html),但是无论如何,如果您同步使用AMQP,这将导致延迟,因此我想说最好使用REST