首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计集成事件应用程序

设计集成事件应用程序
EN

Software Engineering用户
提问于 2021-02-26 17:02:25
回答 1查看 144关注 0票数 0

我们有一个微服务,通过REST与第三方系统集成,为我们的客户处理预约。它利用了事件驱动的模型。我们的微型服务发布一个集成事件,称为AppointmentCreated事件,预约后与第三方服务。

AppointmentCreated事件是在处理器中处理的,它会通知我们的内部(单块)系统执行一些后期指定工作。无论这些步骤成功与否,我们在处理器中都有示例进程,处理器将进入下一步,这在我们启动这个项目时是可以的。

  1. 通知内部系统客户预订了约会
  2. 根据用户是否选择选择短信通知更新用户同意

电流型AppointmentCreated C#

代码语言:javascript
复制
public class AppointmentCreated : IntegrationEvent
{
        public int Id { get; set; }
        public DateTimeOffset CreatedAt { get; set; }
        public string PatientName { get; set; }
        public DateTimeOffset StartTime { get; set; }
        public DateTimeOffset EndTime { get; set; }
        public bool SmsConsent { get; set; }
        public Guid? ContactKey { get; set; }
        public string PatientEmail { get; set; }
}

现在,业务要求在我们的微服务中预订约会后,通过REST调用通知SalesForce团队,包括我们在请求中向第三方发送的内容以及从第三方HTTP调用中得到的响应。企业还希望得到通知,我们是否由于任何原因没有通知SalesForce,我们可以在事件总线上设置一些警报来这样做。

仅仅在事件总线上通知ThirdParty并处理REST通知处理器中的SalesForce,从我们的微服务中发出特定的集成事件是否有意义?在我们的微服务能够与第三方预约之后发出两个事件。

  1. AppointmentCreated
  2. NotifySalesForceAppointmentCreated只需要调用第三方应用程序来进行预约的请求和响应数据。我们只想要成功预约的数据。它不关心当前的AppointmentCreated内容。

你们对这种方法有什么建议吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-02-26 18:25:18

在我看来,只有一个事件是AppointmentCreated。

在此事件中,您可以有不同的使用者(订阅者)。其中一个消费者可以是专门的消费者,有一个任务通知销售团队。

您编写的第二个事件是一个命令,而不是一个事件,在我看来,您不需要它。

每个使用者可以进行单独的执行/处理,并决定使用者是否对事件有足够的反应。

F.ex。为了执行对销售人员的通知,您的NotifySalesForceAppointment需要通过REST调用从外部系统收集一些数据。

  1. 您的使用者对事件作出反应,处理开始将其写入某个持久存储。
  2. 通过rest调用从外部系统收集数据,然后编写数据。(写数据是可选的,如果事情出了问题,你可以从一开始就写)
  3. 通知SalesForce并将处理完成写入持久存储。

如果其中一个步骤失败了,您可以从一开始就开始。

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

https://softwareengineering.stackexchange.com/questions/422753

复制
相关文章

相似问题

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