我想了解 serviceactivator 注释的作用是什么?因为我想在通过 serviceactivator 得到消息时修改消息。例如我已经看到,没有我可以控制的消息参数。为什么handle可以接收消息,甚至看不到传入的消息参数,原理是什么?
@Bean
@ServiceActivator(inputChannel="requests")
public MessageHandler jmsMessageHandler((ActiveMQConnectionFactory connectionFactory) {
JmsSendingMessageHandler handler = new JmsSendingMessageHandler(new
JmsTemplate(connectionFactory));
handler.setDestinationName("requests");
return handler;
}
我希望我能做到
@Bean
@ServiceActivator(inputChannel="requests")
public MessageHandler jmsMessageHandler(Message message) {
String new_message = message.split();
}
该@ServiceActivator
换到消费者终端的呼叫。如果MessageHandler
它按原样使用并且来自 的消息inputChannel
传递给它。但是如果你的代码不是基于MessageHandler
,而是一个简单的 POJO 方法调用,那么一切都基于你的方法的签名。最后,POJO 方法调用被包装到MethodInvokingMessageHandler
.
在您的情况下,它必须是这样的:
@ServiceActivator(inputChannel="requests", outputChannel="toJms")
public String jmsMessageHandler(Message message) {
return message.split();
}
所以,不@Bean
,因为我们只处理 POJO 方法调用。这message
是从请求消息传入的东西,返回String
将成为payload
从输出消息到toJms
通道下游某处处理的东西。
在参考手册中查看更多信息:https : //docs.spring.io/spring-integration/docs/current/reference/html/#annotations
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句