Hi, I'm having problems while replacing jpaEndpoint with direct in the
test. Error is "No consumers available on endpoint".
Thanks in advance!
Here is test definition:
public class RutaArchivarItemsTest extends CamelTestSupport {
@Produce(uri = "direct:producer")
protected ProducerTemplate template;
@EndpointInject(uri = "direct:lala")
protected DirectEndpoint directEndpoint;
@EndpointInject(uri = "mock:borrarEventoPieza")
protected MockEndpoint borrarEventoPieza;
@EndpointInject(uri = "mock:archivoArchivoPieza")
protected MockEndpoint archivoArchivoPieza;
private String id_prefix = RutaArchivarItems.class.getSimpleName();
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RutaArchivarItems();
}
@Override
public boolean isUseAdviceWith() {
return true;
}
public void adviceRoutes() throws Exception {
context.getRouteDefinitions().get(0).adviceWith(context, new
AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith(directEndpoint);
weaveById(id_prefix +
"guardarArchivo").replace().to(archivoArchivoPieza);
weaveById(id_prefix + "buscarEventoPieza").remove();
weaveById(id_prefix +
"borrarEventoPieza").replace().to(borrarEventoPieza);
weaveById(id_prefix +
"buscarConfiguracion").replace().process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader((String)
exchange.getIn().getHeader("key"), "3");
}
});
}
});
}
@Test
public void testEventoSeArchiva() throws Exception {
adviceRoutes();
context.start();
Date fechaPieza = DateTime.now().plusHours(-4).toDate();
EventoPieza eventoPieza = new EventoPieza();
eventoPieza.setIntentos(3);
eventoPieza.setUltimaFechaEnvio(fechaPieza);
template.sendBody(directEndpoint,eventoPieza);
assertEquals(1, borrarEventoPieza.getReceivedCounter());
assertEquals(1, archivoArchivoPieza.getReceivedCounter());
context.stop();
}
}
And route definition:
@ContextName("cdi-context")
public class RutaArchivarItems extends RutaBase {
protected int offset_hours;
protected boolean habilitado;
JpaEndpoint jpaEventoPieza = new JpaEndpoint();
JpaEndpoint jpaArchivo = new JpaEndpoint();
@PostConstruct
public void intialize() {
String delay = cf.find(Configuracion.class,
Configuracion.GENERAL_CONSUMER_DELAY).getValue();
int backoff_multiplier =
Integer.valueOf(cf.find(Configuracion.class,
Configuracion.GENERAL_CONSUMER_BACKOFF_MULTIPLIER).getValue());
int backoff_threshold =
Integer.valueOf(cf.find(Configuracion.class,
Configuracion.GENERAL_CONSUMER_BACKOFF_THRESHOLD).getValue());
//EventoPieza
jpaEventoPieza.setCamelContext(getContext());
jpaEventoPieza.setEntityType(EventoPieza.class);
jpaEventoPieza.setEntityManagerFactory(entityManagerFactory);
jpaEventoPieza.setTransactionManager(transactionManager);
jpaEventoPieza.setEndpointUriIfNotSpecified("jpa://archivoEventoPieza");
//Consumer
jpaEventoPieza.setConsumeDelete(false);
Map<String, Object> prop = new HashMap<>();
prop.put("delay", delay);
prop.put("namedQuery", "pieza.paraArchivar");
jpaEventoPieza.setConsumerProperties(prop);
jpaEventoPieza.setBackoffMultiplier(backoff_multiplier);
jpaEventoPieza.setBackoffIdleThreshold(backoff_threshold);
jpaEventoPieza.setMaximumResults(1000);
//Producer
jpaArchivo.setCamelContext(getContext());
jpaArchivo.setEntityType(ArchivoEventos.class);
jpaArchivo.setEntityManagerFactory(entityManagerFactory);
jpaArchivo.setTransactionManager(transactionManager);
jpaArchivo.setFlushOnSend(true);
jpaArchivo.setEndpointUriIfNotSpecified("jpa://archivoArchivoPieza");
offset_hours = Integer.valueOf(cf.find(Configuracion.class,
Configuracion.GENERAL_ARCHIVO_OFFSET).getValue());
habilitado = Boolean.valueOf(cf.find(Configuracion.class,
Configuracion.GENERAL_ARCHIVO_ENABLED).getValue());
}
@Override
public void configure() throws Exception {
from(jpaEventoPieza).routeId("A_" +
id_prefix).autoStartup(isHabilitado())
.setHeader("key",
constant(Configuracion.GENERAL_ARCHIVO_OFFSET))
.to("buscarConfiguracion").id(id_prefix + "buscarConfiguracion")
.filter().method(BDUtils.class, "piezaListaParaArchivar")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
EventoPieza item = (EventoPieza) in.getBody();
ArchivoEventos archivoEventos = new
ArchivoEventos(item);
in.setBody(archivoEventos);
in.setHeader("itemId", item.getItemId());
in.setHeader("event", item.getEvent());
in.setHeader("version", item.getVersion());
}
})
.to(jpaArchivo).id(id_prefix + "guardarArchivo")
.log(LoggingLevel.INFO, "Archivar: " + body().toString())
.to("buscarEventoPieza").id(id_prefix + "buscarEventoPieza")
.to("borrarEventoPieza").id(id_prefix + "borrarEventoPieza")
.log(LoggingLevel.INFO, "Borrar: " + body().toString());
}
public boolean isHabilitado() {
return habilitado;
}
}
--
View this message in context:
http://camel.465427.n5.nabble.com/Test-JpaConsumer-route-tp5797313.html
Sent from the Camel - Users mailing list archive at Nabble.com.