我有一个Routebuilder
类,该类的PollEnrich
端点是通过String
字段设置的。在routbuilder
中,我想在不使用注册表的情况下将自定义文件,FTP或SFTP ProcessStrategy
添加到端点,即通过将&processStrategy=#customProcessStrategyName
添加到字符串URI。这将要求Routebuilder
类的调用者提前设置该策略,而我想在类本身中完成。
如果将端点作为端点对象会很容易,在这种情况下,我可以调用setProcessStrategy
方法。
如何在将Endpoint
对象用于pollenrich
之前或从中获取Endpoint
对象,如何将setProcessStrategy
对象用于Endpoint
,然后仅使用pollenrich
中的[HttpPost]
public ActionResult BuscarExpediente(Entrega02Programacion03.Models.Expediente model)
{
int? Codigo = model.Codigo;
int? Cedula = model.Solicitante?.Cedula;
string Email = model.Funcionario?.Email;
//Expediente expediente = db.Expediente.Find(id);
//var expediente = db.Expediente.SingleOrDefault(e => e.Codigo == id);
//si me dan el id de expediente lo busco de esta forma
if ((Codigo != null) &&(Cedula == null) &&(Email == null))
{
//var expediente = db.Expediente.Where(E => E.Codigo == Codigo).SingleOrDefault();
//return View(expediente);
TempData["idExpedienteBuscar"] = Codigo;
return RedirectToAction("ExpedientesPorId");
}
//si me dal la cedula de un solicitante busco de esta forma
if((Cedula != null)&& (Email == null)&& (Codigo == null))
{
TempData["ExpedientesCedulaSolicitante"] = Cedula;
return RedirectToAction("ExpedientesPorCedulaSolicitante");
}
//si me dan un funcionario busco de esta forma
if((Email != null)&& (Codigo == null) && (Cedula == null))
{
TempData["ExpedienteBuscarFuncionarioID"] = Email;
return RedirectToAction("ExpedientesPorFuncionario");
}
//si no me dan nada busco de estra otra
else
{
//que de el mensaje de que solo se puede insertar un campo de busqueda
//hay que poner en el view un label o algo para tirar el msj
}
//ViewBag.FechInicio = expediente.FechaCreacion;
//ViewBag.Tramite = expediente.Tramite.Titulo;
//ViewBag.Funcionario = expediente.Funcionario.Nombre;
return View();
}
对象,而不是更常见的字符串。
答案 0 :(得分:0)
您可以使用CamelContext#getEndpoint
方法以编程方式获取端点,该方法可以重用或创建新端点。
请参见CamelContext#getEndpoint javadoc
将给定名称解析为指定类型的端点。如果名称已注册了单例端点,则返回单例。否则,将创建一个新的端点并在EndpointRegistry中注册。
然后将此创建的端点与.pollEnrich().constant(endpoint)
FileEndpoint fileEndpoint = getContext().getEndpoint("file://somewhere", FileEndpoint.class);
fileEndpoint.setProcessStrategy(new Something<>());
from("direct:input")
.pollEnrich().constant(fileEndpoint)
.to("log:output");
在from(fileEndpoint)
中使用RouteBuilder#from(Endpoint)来简单地在from()中使用端点