Camel 處理器示例
處理器只包含路由所需的方法。它只是一個包含多種方法的經典 Java Bean。你還可以實現 Processor 並覆蓋流程方法。
請參閱以下程式碼:
@Component("testExampleProcessor")
public class TestExampleProcessor {
private static final Logger LOGGER = LogManager.getLogger(TestExampleProcessor.class);
@Autowired
public ImportDocumentTraitementServiceImpl importDocumentTraitementService;
@Autowired
public ImportDocumentProcessDAOImpl importDocumentProcessDAO;
@Autowired
public ImportDocumentTraitementDAOImpl importDocumentTraitementDAO;
// ---- Constants to name camel headers and bodies
public static final String HEADER_ENTREPRISE = "entreprise";
public static final String HEADER_UTILISATEUR = "utilisateur";
public static final String HEADER_IMPORTDOCPROCESS = "importDocumentProcess";
public void getImportDocumentProcess(@Header(HEADER_ENTREPRISE) Entreprise entreprise, Exchange exchange) {
LOGGER.info("Entering TestExampleProcessor method : getImportDocumentProcess");
Utilisateur utilisateur = SessionUtils.getUtilisateur();
ImportDocumentProcess importDocumentProcess = importDocumentProcessDAO.getImportDocumentProcessByEntreprise(
entreprise);
exchange.getIn().setHeader(HEADER_UTILISATEUR, utilisateur);
exchange.getIn().setHeader(HEADER_IMPORTDOCPROCESS, importDocumentProcess);
}
public void createImportDocumentTraitement(@Header(HEADER_ENTREPRISE) Entreprise entreprise,
@Header(HEADER_UTILISATEUR) Utilisateur utilisateur,
@Header(HEADER_IMPORTDOCPROCESS) ImportDocumentProcess importDocumentProcess, Exchange exchange) {
LOGGER.info("Entering TestExampleProcessor method : createImportDocumentTraitement");
long nbImportTraitementBefore = this.importDocumentTraitementDAO.countNumberOfImportDocumentTraitement();
ImportDocumentTraitement importDocumentTraitement = this.importDocumentTraitementService.createImportDocumentTraitement(
entreprise, utilisateur, importDocumentProcess, "md5_fichier_example_test", "fichier_example_test.xml");
long nbImportTraitementAfter = this.importDocumentTraitementDAO.countNumberOfImportDocumentTraitement();
exchange.getIn().setHeader("nbImportTraitementBefore", Long.valueOf(nbImportTraitementBefore));
exchange.getIn().setHeader("nbImportTraitementAfter", Long.valueOf(nbImportTraitementAfter));
exchange.getIn().setHeader("importDocumentTraitement", importDocumentTraitement);
}
// Rest of the code contains getters and setters for imported dependencies
}
這裡不多說,除了我們使用交換將物件從一個部分轉移到另一個部分。這是我的專案通常完成的方式,因為我們有非常複雜的流程來處理。