我开始潜入项目反应堆以了解它是否适合我的用户案例,但我不确定是否属实。 我的用户案例有点复杂:
应用程序A可以通过http向应用程序B发送一些消息 每条消息都是对文档的操作(例如插入doc1,删除doc1) 应用程序B接收消息,执行某些操作(主要检查内容),如果一切正常,则将消息转发给应用程序C.如果应用程序C响应OK应用程序B通知A(使用http调用)消息已发送到C.
应用程序C超出我的控制范围
应用程序B是我必须实现的;它有一些额外的要求
申请B必须与A不同;即A必须不等待B将消息发送给C.
如果B在文档D1上发送插入消息并且它从A收到文档D1上的删除消息,则删除消息必须等待执行插入,并且只有在执行成功后,B才能发送删除消息。如果D1到C的插入消息超时,则必须重新调度消息,并且在成功插入后必须将取消消息排队。如果插入消息面临超过n个超时,则必须保存插入和删除消息以便以后进行脱机处理。应用程序A保证以正确的顺序将插入和删除消息发送给B.
B必须允许并发执行,即对文档D1进行操作的消息不得阻止对具有不同id(即D2)的消息进行操作的消息。
目前,我计划在应用程序B中使用队列,当消息到达时,它将被放入队列并稍后处理。我的困难是开发一个响应式应用程序(使用spring project-reactor)来管理(在应用程序B内部)与C的通信,但我仍然坚持错误处理和重试尝试。
有人可以告诉我这是否是项目反应堆的suitalbe用例?如果可以,有人可以给我一些具体的建议来处理我的要求吗?
非常感谢