我有下面的路由和bean来从属性文件获取消息.在某些消息中,我必须替换消息中的参数.因此,我一直在寻找一种解决方案,不需要在bean中编写两个方法:一个带参数(getMessageWithArgs
),另一个不带参数(getMessage
).
通过在路由中使用DSL来摆脱bean中的getMessageWithArgs
,或者让getMessage
中的参数成为可选的,这样我在bean中就有了一个方法,这是可行的吗?
Route
@Override
public void configure() throws Exception {
from("activemq:queue:1234")
.setHeader("functionId", simple(FUNCTION_ID))
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
message.setHeader("messageId", "notice_1234_error_messageBox_1");
// List<String> arguments = Arrays.asList("Test1", "Test2", "Test3");
// message.setHeader("arguments", arguments);
}
})
.setHeader("message").method("messageBean", "getMessage( ${header.functionId}, ${header.messageId})")
//.setHeader("message").method("messageBean", "getMessageWithArgs( ${header.functionId}, ${header.messageId}, ${header.arguments})")
.log("after calling getMessageWithoutValidation: ${body}");
}
Bean
@Component
public class MessageBean {
public String getMessage(@Header("functionId") String functionId,
@Header("messageId") String messageId) {
//Doing something to get the message
return message;
}
public String getMessageWithArgs(@Header("functionId") String functionId,
@Header("messageId") String messageId,
@Header("arguments") List<String> arguments) {
//Doing something to get the message
return message;
}
}