我正在使用 Spring Integration 开发 Web 应用程序来路由我的消息,但是我在传递我的标头值时遇到了一些问题。我的消息通过路由器和服务激活器。
标头值在我的路由器的路由方法中可用,所以它似乎没问题。让我们假设这不是问题(我通过禁用我的服务激活器来检查这一点)。
当涉及到我的服务激活器方法时,会引发以下错误:“无法在目标类 MyService 上找到任何名为process的有效消息处理方法。”
我的弹簧集成.xml
<channel id="route" />
<service-activator method="process" input-channel="route" ref="myService" output-channel="myOutputChannel" />
MyRouter.java
@Component
public class MyRouter {
public String router(String message, @Header("isValid") boolean isValid) {
// isValid is "true"
return "route";
}
}
我的服务.java
@MessageEndpoint
@Transactional
public class MyService {
public void process(String message, @Header("isValid") boolean isValid) {
...
}
}
这是为什么?路由后是否会删除标头值?还是我的配置不对?我尝试将@ServiceActivator 注释添加到我的流程方法中,但没有帮助。任何帮助将不胜感激。