如何修改ActiveMQ Classic Broker端点的上下文路径
修改ActiveMQ Broker的WebSocket访问上下文路径
你可以通过调整ActiveMQ内置Jetty服务器的Servlet上下文配置来实现,无需反向代理,具体步骤如下:
1. 定位配置文件
找到ActiveMQ安装目录下的conf/jetty.xml(部分版本可能在conf/activemq.xml的<jetty>节点内)。
2. 修改WebSocket Servlet的上下文路径
场景1:使用独立jetty.xml配置
找到WebSocket相关的ServletContextHandler配置,将contextPath属性值改为你需要的路径(比如/broker1),示例配置如下:
<bean id="webSocketHandler" class="org.eclipse.jetty.servlet.ServletContextHandler"> <!-- 修改此处的contextPath为自定义路径 --> <property name="contextPath" value="/broker1"/> <property name="servletHandler"> <bean class="org.eclipse.jetty.servlet.ServletHandler"> <property name="servlets"> <list> <ref bean="webSocketServlet"/> </list> </property> <property name="mappings"> <list> <entry key="/*" value-ref="webSocketServlet"/> </list> </property> </bean> </property> </bean>
场景2:在activemq.xml中配置
如果你的WebSocket配置在activemq.xml的<jetty>节点内,直接添加或修改servletContextHandler的contextPath:
<jetty xmlns="http://activemq.apache.org/schema/core"> <servletContextHandler contextPath="/broker1"> <servlet> <servlet-name>WebSocketServlet</servlet-name> <servlet-class>org.apache.activemq.web.WebSocketServlet</servlet-class> <init-param> <param-name>brokerURL</param-name> <param-value>vm://localhost</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>WebSocketServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </servletContextHandler> </jetty>
3. 重启ActiveMQ
修改完成后重启ActiveMQ服务,即可通过ws://localhost:61614/broker1访问Broker的WebSocket端点。
注意:不同ActiveMQ版本的配置细节可能略有差异,若使用STOMP over WebSocket,需对应修改
org.apache.activemq.web.StompSocketServlet的相关配置。
内容的提问来源于stack exchange,提问作者ibory0205
相关产品推荐
相关产品推荐

