使用Spring或Lambda进行批量事件触发



寻求应用程序设计方面的帮助。我正在使用spring框架和托管应用程序在AWS。

我正在开发一个企业Java Web应用程序,该应用程序假定在达到事件触发时间时处理事件。例如,消费者可以设置一个事件开始于12/20/22上午07:35,当到达该时间时,系统应该发送通知。

我可以将这些事件与其触发时间一起存储在数据库中,并设置一个Spring调度器(@Scheduler)以每分钟运行一次并处理达到触发时间的事件。对于这种方法,我唯一担心的是,每分钟可能会触发成百上千个事件,而且无法在一分钟内处理完毕。

是否有其他的设计方法?我不知道Spring是否提供了可以创建这些事件的功能,并且框架在到达触发时间时触发这些事件。这样,我就可以远离管理调度和触发部分。

我正在使用AWS来托管这个应用程序,所以我正在考虑的另一个选择是为每个这样的事件创建一个AWS lambda,并让AWS管理触发部分。这样,我就不用管理触发器了。

让我知道你的观点?或者如果你遇到类似的问题,你是如何解决的?

您可以考虑使用spring-cloud-dataflow将其作为任务和流来管理。

您创建一个自定义批处理应用程序,该应用程序将使用@Scheduled在事件发生时检查数据库,然后将事件发送到流。你可以使用Spring Integration api与RabbitMQ或Kafka主题进行交互。

事件应该包含处理事件所需的足够信息。然后你有一个流应用程序生成内容并通过电子邮件发送,或者将其传递给发送电子邮件的单独流应用程序。https://dataflow.spring.io/docs/stream-developer-guides/programming-models/

流程看起来像这样::mail_events | message-processor | message-sender

您将为mail_events配置属性,以匹配为您的邮件事件批处理应用程序创建和配置的主题。

您也可以使用Spring Cloud Data Flow来管理邮件事件批处理应用程序。您可以扩展每个应用程序https://dataflow.spring.io/docs/recipes/scaling/

最新更新