【问题标题】:Creating asynchronous events in spring在spring中创建异步事件
【发布时间】:2023-04-06 20:33:01
【问题描述】:

我正在考虑使用 spring 3.1 发布事件并使用侦听器来使用这些事件。但是我已经读到这些事件是同步的,是否可以使它们异步,也许使用 @async 注释?

我真的想在 Java/Spring 中创建一个事件驱动的架构 - 发布和消费事件,你认为 Spring/Java 就足够了吗?

【问题讨论】:

标签: java spring spring-mvc


【解决方案1】:

在这种情况下,使用Spring integration. 将是完美的选择,它提供了不同类型的消息传递解决方案。

这里是关于 Event-Driven Consumer:

下面是一个与您的需求相关的 Spring 集成示例:

  1. Messaging Endpoints
  2. some more examples

祝你好运!

【讨论】:

  • 看了弹簧集成,对我想做的事情来说似乎有点重。我所拥有的只是一个班级发布活动,最多两个班级听他们。并且所有课程都在同一个网络应用程序中。
  • 好的,所以看起来自己实现它不是问题。你需要什么调度机制来发布事件?
  • 可以在ApplicationContext中创建一个名为applicationEventMulticaster(SimpleApplicationEventMulticaster)的bean,并将TaskExecutor设置为SimpleAsyncTaskExecutor。这将允许在 spring 中进行异步事件分派。
【解决方案2】:

您是否研究过Spring Reactor 项目?

摘录如下:

Reactor 有什么用处?

虽然你可以让 Reactor 做很多事情,因为它与生俱来 灵活性,它真的被设计成一个基础框架 在合理执行时需要高吞吐量的应用程序 小块无状态的异步处理。纯粹的体积 现代应用程序中非人为生成的数据很容易超过 传统的单线程、阻塞设计模型。从手机 生成位置信息流的应用程序 计算机化的制造机器发出大量的 几何数据到大数据应用程序挖掘实时日志到 生成业务指标:现代数据驱动的应用程序需求 比传统的更好的资源利用率和更高的吞吐量 命令式的,阻塞的应用程序通常可以提供。

【讨论】:

  • 我使用的是 spring 5。它同时具有反应器和 spring-events。应该使用哪一个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多