Part 3
Lets just recap on the solution we have now:
Code Block | ||||
---|---|---|---|---|
| ||||
public class ReportIncidentEndpointImpl implements ReportIncidentEndpoint {
private CamelContext camel;
private ProducerTemplate template;
public ReportIncidentEndpointImpl() throws Exception {
// create the camel context that is the "heart" of Camel
camel = new DefaultCamelContext();
// get the ProducerTemplate thst is a Spring'ish xxxTemplate based producer for very
// easy sending exchanges to Camel.
template = camel.createProducerTemplate();
// start Camel
camel.start();
}
/**
* This is the last solution displayed that is the most simple
*/
public OutputReportIncident reportIncident(InputReportIncident parameters) {
// transform the request into a mail body
Object mailBody = template.sendBody("velocity:MailBody.vm", parameters);
// store the mail body in a file
String filename = "mail-incident-" + parameters.getIncidentId() + ".txt";
template.sendBodyAndHeader("file://target/subfolder", mailBody, FileComponent.HEADER_FILE_NAME, filename);
// return an OK reply
OutputReportIncident out = new OutputReportIncident();
out.setCode("OK");
return out;
}
}
|
This completes the first part of the solution: receiving the message using webservice, transform it to a mail body and store it as a text file.
What is missing is the last part that polls the text files and send them as emails. Here is where some fun starts, as this requires usage of the Event Driven Consumer EIP pattern to react when new files arrives. So lets see how we can do this in Camel. There is a saying: Many roads lead to Rome, and that is also true for Camel - there are many ways to do it in Camel.