You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus集成Camel调用外部端点报错:需配置servlet路径映射规则

问题根因

启动报错是因为你引入了camel-quarkus-servlet依赖,但没有按照Quarkus Camel的规则配置Servlet的路径映射,同时REST路由指定的组件和引入的依赖不匹配。

解决方案

1. 修正application.properties配置

删除原有servlet相关配置,替换为Quarkus Camel规定的配置项:

quarkus.http.port=8056
# 配置Camel Servlet的路径映射
quarkus.camel.servlet.url-patterns=/services/*

如果需要自定义Servlet名称,也可以用指定名称的配置方式:

quarkus.camel.servlet.CamelServlet.url-patterns=/services/*

2. 修正REST路由的组件配置

你当前路由配置的REST组件是restlet,但pom中没有引入对应依赖,直接将组件改为你已经引入的servlet即可,同时不需要手动指定host和port,会自动读取quarkus.http.port的配置:

package com.example.control;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.rest.RestBindingMode;

import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.core.Response;

@ApplicationScoped
public class CompanyRouter extends RouteBuilder {

    @Override
    public void configure() {
        restConfiguration().component("servlet")
                .bindingMode(RestBindingMode.auto);

        rest("/api/people")
                .get()
                .outType(Response.class)
                .to("bean:getCompaniesBean");
    }
}

可选:外部HTTP接口调用配置

你后续需要调用携带token、别名等自定义请求头的外部端点,可以先在pom中添加HTTP组件依赖:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-http</artifactId>
    <version>2.3.0</version>
</dependency>

调用外部接口时可以通过设置Header传递自定义参数,示例如下:

from("direct:callExternalApi")
    // 设置自定义请求头
    .setHeader("Authorization", constant("Bearer 实际token值"))
    .setHeader("自定义别名头", constant("实际别名值"))
    .to("http://outside.endpoint.com")
    // 自动将响应JSON转换为Java对象
    .unmarshal().json(JsonLibrary.Jackson, 你的响应对象类.class)
    .log("外部接口返回结果:${body}");

内容的提问来源于stack exchange,提问作者Van-Romel Alves Sena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:36:01