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

如何在Kubernetes安全Ingress后配置WildFly内嵌的ActiveMQ Artemis?

问题解决:WildFly内嵌ActiveMQ Artemis通过K8s Ingress安全连接JMS

核心问题

Kubernetes Ingress启用TLS后,客户端remote+https和REST访问正常,但从WildFly JNDI lookup获取的JMS连接工厂无法建立安全连接。手动配置客户端时添加sslEnabled=true参数即可正常工作,需在WildFly端配置让导出的连接工厂自动携带该参数。

解决方案:修改WildFly配置

在standalone.xml的messaging-activemq子系统中,为http-connector添加sslEnabled参数,同时确认套接字绑定端口为443:

<subsystem xmlns="urn:jboss:domain:messaging-activemq:16.0">
    <server name="default">
        <security enabled="false"/>
        <http-connector name="http-connector" socket-binding="http-remote-jms" endpoint="http-acceptor">
            <!-- 添加参数告知客户端启用SSL -->
            <param name="sslEnabled" value="true"/>
        </http-connector>
        <http-acceptor name="http-acceptor" http-listener="default"/>
        <connection-factory name="RemoteConnectionFactory" 
                            entries="java:jboss/exported/jms/RemoteConnectionFactory" 
                            connectors="http-connector"/>
    </server>
</subsystem>

同时确认socket-binding-group中的http-remote-jms端口设置为443:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <!-- 其他绑定配置... -->
    <socket-binding name="http-remote-jms" port="443"/>
</socket-binding-group>

原理说明

  • WildFly导出的RemoteConnectionFactory会将http-connector上的配置参数传递给客户端,客户端lookup连接工厂时会自动获取sslEnabled=true配置,无需手动编码设置。
  • 无需将http-acceptor改为https-acceptor:Ingress与WildFly之间保持明文连接,WildFly本身不需要配置TLS证书,仅需告知客户端通过SSL连接Ingress即可。

验证

修改配置后重启WildFly,客户端使用原代码lookup连接工厂并创建连接:

final TopicConnectionFactory connectionFactory =
    (TopicConnectionFactory)context.lookup(aName);
connectionFactory.createTopicConnection();

此时连接应能正常建立,客户端与Ingress之间为安全连接,Ingress与WildFly之间保持明文通信。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:55:08