テストがうまくいかない理由を理解できません。私は傍受を試み、エンドポイントへの送信をスキップします。これはBeanリファレンスであり、何も起こりません。 バージョン2.16.2を使用しています。Apache camel。 InterceptSendToがBeanエンドポイントで動作しない
テストcamel.xml
<bean id="eb" class="com.rencap.emf.bpipe.EndpointBean"/>
<camel:camelContext xmlns="http://camel.apache.org/schema/spring">
<camel:endpoint id="requestEP" uri="direct:request"/>
<endpoint id="beanEP" uri="bean:eb?method=processMessage" />
<camel:route id="testRoute">
<camel:from ref="requestEP"/>
<camel:to ref="beanEP" />
</camel:route>
</camel:camelContext>
EndpointBean.java
package com.rencap.emf.bpipe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EndpointBean {
private static Logger LOG = LoggerFactory.getLogger(EndpointBean.class);
public void processMessage(String msg){
LOG.info("Processing message: {} ",msg);
}
}
ユニットテスト:
@EndpointInject(ref="requestEP")
ProducerTemplate requestEP;
@EndpointInject(ref="beanEP")
ProducerTemplate beanEP;
@Autowired
ModelCamelContext camelContext;
@Test
public void test() throws Exception{
camelContext.getRouteDefinition("testRoute").adviceWith(camelContext , new AdviceWithRouteBuilder(){
@Override
public void configure() throws Exception {
interceptSendToEndpoint(beanEP.getDefaultEndpoint().getEndpointUri()).
to("mock:send").
skipSendToOriginalEndpoint();
}
});
TestUtils.waitingFor("Configuration applied", 2000);
MockEndpoint mockEP = camelContext.getEndpoint("mock:send",MockEndpoint.class);
mockEP.setExpectedCount(1);
requestEP.sendBody("Message");
mockEP.assertIsSatisfied();
TestUtils.waitingFor("All rows commited", 2000);
}
テストは常に失敗します。 ログ:
13:11:02.512 [main] INFO o.apache.camel.model.RouteDefinition - AdviceWith route after: Route(testRoute)[[From[ref:requestEP]] -> [InterceptSendToEndpoint[bean://eb?method=processMessage -> [To[mock:send]]], To[ref:beanEP]]]
13:11:02.537 [main] INFO o.a.camel.spring.SpringCamelContext - Route: testRoute started and consuming from: Endpoint[direct://request]
13:11:02.538 [main] INFO com.rencap.emf.bpipe.test.TestUtils - Wait 2000 ms. Configuration applied
13:11:04.554 [main] INFO com.rencap.emf.bpipe.EndpointBean - Processing message: Message
13:11:04.556 [main] INFO o.a.c.component.mock.MockEndpoint - Asserting: Endpoint[mock://send] is satisfied
これは、エンドポイントに送信することは傍受やスキップされていないことを意味します。私は何かを理解していないかもしれませんが、私はこの方法の使用に関する制限を見つけることができません。
さらに、ログを持つエンドポイントで同じ問題が発生していることに気付きました。 beanEPを置き換えた場合:
<endpoint id="beanEP" uri="log:LOGMESSAGE" />
私は同じ結果を受け取ります。 しかし、私は
<endpoint id="beanEP" uri="seda:send" />
にそれを交換して、新しいルート追加した場合:私は、結果とテストを期待されます
<camel:route id="route2">
<camel:from ref="sendEP"/>
<camel:log message="msg received ${body}"/>
</camel:route>
がsuccessedされます。
どうすればいいですか?あるいは、この方法にいくつかの制限がありますか?