当我们的应用程序运行高负载时,我们会遇到极高的 CPU(15 个内核,100%)。配置文件显示 SpEL 使用了 20% 以上,其中主要由 ServiceActivatingHandler 使用。该应用程序使用服务激活器来处理消息,但从不使用任何 SpEL。
一个流程中大约有12个ServiceActivator,其定义如下:
<service-activator ref="myService"/>
或者
<service-activator ref="myService" method="addStuff"/>
大部分签名如下:
@ServiceActivator public Message<String> handle(Message<String>, @Header("header1") String header1, @Header("header2") String header2, @Header("header3") String header3)
如何避免这种表达式求值?应用程序在 SprintBoot 和 SpringIntegration 4.3.x 上运行