首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时态/地籍编制概念

时态/地籍编制概念
EN

Stack Overflow用户
提问于 2021-09-21 11:09:47
回答 1查看 654关注 0票数 1

在目前的应用程序中,我们有三个服务:

  • 发票
  • 银行转账:调用外部API,这可能需要一分钟左右,这取决于队列。
  • ledger :创建借方-贷方分类账的内部微服务

为了沟通,我们有一个编曲传奇。流程主要是使用发票作为策划者:

  1. 发票服务向rabbitmq发布消息,要求支付发票X
  2. 银行转账服务监听信息,收到发票X
  3. 银行转账服务处理转帐(调用银行的API)。付款成功时,向rabbitmq发布“X发票已付款”的消息
  4. 发票服务听取‘发票X已付款’的信息
  5. 发票服务发布消息‘创建X发票分类账’并发布到rabbitmq
  6. ledger服务从rabbitmq收听“创建X发票分类账”消息
  7. 分类账服务创建适当的分类账日记账借方/贷方,然后发布“为X发票创建的分类账”
  8. 发票服务侦听消息‘为X发票创建的分类账’,然后完成(关闭)交易

问题1如果我使用时间时间(只是查找),它们不依赖于上面这样的pub子模式。那么我如何实现它呢?

我想(CMIIW):

  • 创建InvoiceActivity
  • 创建BankTransferActivity
  • 创建LedgerActivity
  • 创建InvoicePaymentWorkflow

所有这些WorkflowActivity都是发票服务应用程序的一部分。但是,银行转账服务和分类账服务现在不再依赖pub-sub,而是提供API来处理转账(就银行转账而言,它是外部银行调用的代理API ),分类账服务提供API创建借方/信用日记账。CMIIW,在这种情况下,我们不再需要在银行转账服务和分类帐服务上创建侦听器(或cadence / this活动),我们需要提供API。

还是我想错了?银行转帐业务和分类账业务应该有一些活动吗?但是,如果是这样,发票服务如何触发和安排工作流呢?

问题2,,但是现在调用是异步的。日志分类账的创建实际上有一些验证,并且有时负载很重,因此取决于队列上的消息,从消息发送到rabbitmq到实际创建日志需要5分钟的时间。在API调用中,这将是一个超时。

问题3,,以及种族状况如何?一些期刊将按顺序创建。使用rabbitmq,我们可以使用特定的技术(队列上的单个消费者,类似kafka主题)来实现这一点。

问题4,如何处理补偿事务?如果账簿失败了,我们必须做点什么。在我们的情况下,我们必须通知会计人员,因为银行转账已经处理,不能倒转。

问题5对一些补贴公司而言,当分类账失效时,我们仍有控制权,因此我们可以补偿/收回发票金额,并将金额退还给母公司。假设我们在银行转移服务上有一个侦听器,我们如何触发补偿API?

在cadence / 时间中,这是否适合使用?如果是,如何处理上述问题?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 19:58:17

TLDR;这个用例非常适合时态,因为它极大地简化了代码和操作。

问题1

我建议在他们的通讯服务中主办活动。因此,InvoiceActivity应该由发票服务托管,BankTransferActivity由银行转账服务托管。这消除了创建同步API的需要,并确保了工作流和活动实现之间的流控制。请参阅更详细地解释这一点的这个职位

只有在这种情况下,发票服务应用程序才会承载工作流代码。

问题2

在相应的服务中托管活动解决了这个问题。时态支持无限持续的活动。请注意,对于长期运行的活动,推荐心跳,以确保及时检测故障。

问题3

确切的解决方案取决于确切的需求。在大多数情况下,需要特定排序的日志条目应该从单个工作流中编排。

问题4

通过确保工作流代码最终完成,支持补偿操作变得非常简单。这是来自SAGA实例Java示例存储库

问题5

只需将此补偿逻辑作为同一工作流的一部分即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69267865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档