我有一个与架构有关的问题.这是一个与语言无关的问题,但是当我来自Java背景时,如果有人用Java方式引导我,对我来说会更容易.
基本上,我正在编写的中间件与基于SOAP的第三方服务进行通信.调用是异步的 - 在某种程度上,当一个服务被调用时,它返回一个响应01 - 处理; 意味着第三方已成功收到请求.在原始SOAP请求中,每次都必须提交一个回调URL,其中第三方实际发送结果.因此,调用特定服务实际上不会立即返回结果; 结果在中间件的单独HTTP端点中接收.
现在在我们的前端,我们不希望使用户体验复杂化.我们希望我们的用户调用中间件功能(通过菜单项/按钮),并立即获得结果; 并将肮脏的工作留给中间件.
请注意,从前端调用的中间件函数(比如说X())和第三方推送结果的中间件端点URL(让我们称之为Y)完全是彼此分开的.X()不得不等待,然后获取Y中抓取的结果,然后将结果返回到前端.
如何构建一个强大的解决方案来实现上述行为?图片完美地描绘了我的情况.任何建议将受到高度赞赏.
java architecture multithreading asynchronous integration-patterns
我想到了nservicebus http://docs.particular.net/的文件,但仍然混淆我怎么能做我想做的事情.
我的目标是拥有一个Windows服务,生成任务并将它们放入队列,另一方面,我需要一些消费者,无论谁有空,从队列中获取任务,并在消息中指定作业.
任何人都可以给我一些提示,我怎么能继续?
谢谢
我们目前开始将事件从一个中央应用程序广播到其他可能感兴趣的消费者应用程序,并且我们团队的成员对于应该在已发布的消息中放入多少内容有不同的选择。
总体思路/架构如下:
基于企业集成模式,我们正在尝试为我们发布的消息定义规范格式,并且在两种方法之间犹豫:
极简消息/ event-store-ish:对于域模型发布的每个事件,生成一条消息,其中仅包含相关的聚合根部分(例如,当更新完成时,仅发布有关更新部分的信息聚合根的,或多或少匹配最终用户在使用我们的应用程序时经历的过程)
优点
缺点
完全包含的幂等消息:对于域模型发布的每个事件,生成一条消息,其中包含该时间点聚合根的完整快照,因此实际上只处理两种消息“创建或更新”和“删除”(+元数据,如有必要,包含更具体的信息)
优点
缺点
您会推荐一种方法而不是另一种方法吗?
我们还应该考虑另一种方法吗?
domain-driven-design message-queue integration-patterns rabbitmq