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

如何用ClientID、TenantID与Secret配置Camel-Azure-ServiceBus XML连接

解决方案:用Azure AD凭据配置Camel Azure Service Bus组件

你遇到的401错误是因为构造的SAS连接字符串无效——你没有对应的SharedAccessKey,而ServiceBusConfiguration除了支持SAS连接字符串,还可以通过Azure AD服务主体凭据(ClientID、TenantID、Secret)完成认证,不需要SAS连接字符串。以下是纯XML配置方案:

1. 配置Azure AD服务主体凭据

创建ClientSecretCredential Bean,用于通过Azure AD生成认证令牌:

<bean id="clientSecretCredential" class="com.azure.identity.ClientSecretCredential">
    <constructor-arg index="0">
        <bean class="com.azure.identity.ClientSecretCredentialBuilder">
            <property name="clientId" value="你的ClientID"/>
            <property name="tenantId" value="你的TenantID"/>
            <property name="clientSecret" value="你的Secret"/>
            <property name="authorityHost" value="https://login.microsoftonline.com/"/>
        </bean>
    </constructor-arg>
</bean>

2. 配置ServiceBusClientBuilder

用上述凭据构建ServiceBus客户端的Builder,指定Service Bus命名空间:

<bean id="serviceBusClientBuilder" class="com.azure.messaging.servicebus.ServiceBusClientBuilder">
    <property name="credential" ref="clientSecretCredential"/>
    <property name="fullyQualifiedNamespace" value="elexon-iris.servicebus.windows.net"/>
</bean>

3. 修改Camel Azure Service Bus组件配置

移除原有的connectionString配置,改用上面的serviceBusClientBuilder:

<bean id="azureServiceBusComponent" class="org.apache.camel.component.azure.servicebus.ServiceBusComponent">
    <property name="configuration">
        <bean class="org.apache.camel.component.azure.servicebus.ServiceBusConfiguration">
            <!-- 替换connectionString为serviceBusClientBuilder -->
            <property name="serviceBusClientBuilder" ref="serviceBusClientBuilder"/>
            <!-- 指定目标队列名称 -->
            <property name="entityName" value="iris.705d3ce1-xxxx-4fdf-acb3-xxxxxx"/>
        </bean>
    </property>
</bean>

4. 保留原有路由和端点配置

你的路由和端点配置可保持不变,也可简化端点URI(已在配置中指定队列名称):

<endpoint id="azureQueueEndpoint" uri="azureServiceBusComponent:" />

<route id="Elexon_IRIS_Route">
    <from uri="azureQueueEndpoint" />
    <to uri="localAMQ:topic:IRIS-Elexon"/>
</route>

注意事项

  • 确保ActiveMQ的lib目录下包含以下依赖包:
    • azure-identity-x.x.x.jar
    • azure-messaging-servicebus-x.x.x.jar
    • azure-core-x.x.x.jar
  • 确认你的Azure AD服务主体已被授予Azure Service Bus队列的读取权限(如Azure Service Bus Data Receiver角色),否则仍会出现401错误。

内容的提问来源于stack exchange,提问作者user3788685

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:44