为了账号安全,请及时绑定邮箱和手机立即绑定

骆驼 RabbitMQ 到 REST 端点 SpringBootTest 失败

骆驼 RabbitMQ 到 REST 端点 SpringBootTest 失败

回首忆惘然 2023-06-08 19:46:20
我正在尝试编写一个 SpringBootTest 来测试 Camel 路由。我的路线是这样的: restConfiguration().producerComponent("http4")            .host("http://127.0.0.1);    from("rabbitmq:foo")            .to(rest:post")            .log("Hello!: ${body}");这是我的测试:@RunWith(CamelSpringRunner.class)@MockEndpoints@UseAdviceWith@SpringBootTestpublic class SimpleCamelRouteTest extends CamelTestSupport {@EndpointInject(uri = "mock:rest")private MockEndpoint mockEndpoint;@AutowiredCamelContext context;@AutowiredProducerTemplate template;@Beforepublic void setUp() throws Exception {    context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {       @Override        public void configure() throws Exception {           interceptSendToEndpoint("rabbitmq:foo")                   .skipSendToOriginalEndpoint()                   .to("mock:foo");           interceptSendToEndpoint("http://*")                   .skipSendToOriginalEndpoint()                   .to("mock:rest");        }    });    context.start();}@Testpublic void test() throws InterruptedException {    String body = "Camel";    mockEndpoint.expectedMessageCount(1);    template.sendBody("mock:foo", body);    mockEndpoint.assertIsSatisfied();}}看起来它正试图在启动时连接到一个真正运行的 RabbitMq 实例:(18-08-2019 13:20:07.729 [Camel (camel-1) thread #3 - RabbitMQConsumer] INFO  o.a.c.c.rabbitmq.RabbitMQConsumer.call - Connection failed, will retry in 5000msjava.net.ConnectException: 连接被拒绝 (Connection refused)任何人都可以给我一些建议,告诉我如何告诉我的 SpringBootTest 不要寻找正在运行的代理并尊重我设置的模拟(假设模拟设置正确。)
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您正在尝试使用拦截消费者 ( frominterceptSendToEndpoint。这不可能。为此你需要replaceFromWith

context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
   @Override
    public void configure() throws Exception {
       replaceFromWith("direct:triggerFoo"); 
             //...
    }
});

然后像这样触发路由:

template.sendBody("direct:triggerFoo", body);

你也在拦截http4生产者,但从你的路线看来你可能想要拦截rest*


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信