我们有一个微服务,通过REST与第三方系统集成,为我们的客户处理预约。它利用了事件驱动的模型。我们的微型服务发布一个集成事件,称为AppointmentCreated事件,预约后与第三方服务。
AppointmentCreated事件是在处理器中处理的,它会通知我们的内部(单块)系统执行一些后期指定工作。无论这些步骤成功与否,我们在处理器中都有示例进程,处理器将进入下一步,这在我们启动这个项目时是可以的。
电流型AppointmentCreated C#
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,从我们的微服务中发出特定的集成事件是否有意义?在我们的微服务能够与第三方预约之后发出两个事件。

你们对这种方法有什么建议吗?
发布于 2021-02-26 18:25:18
在我看来,只有一个事件是AppointmentCreated。
在此事件中,您可以有不同的使用者(订阅者)。其中一个消费者可以是专门的消费者,有一个任务通知销售团队。
您编写的第二个事件是一个命令,而不是一个事件,在我看来,您不需要它。
每个使用者可以进行单独的执行/处理,并决定使用者是否对事件有足够的反应。
F.ex。为了执行对销售人员的通知,您的NotifySalesForceAppointment需要通过REST调用从外部系统收集一些数据。
如果其中一个步骤失败了,您可以从一开始就开始。
https://softwareengineering.stackexchange.com/questions/422753
复制相似问题