运行 servlet 容器端口上的嵌入式 activemq 代理

Run embedded activemq broker on the servlet container port

我有一个 jar 打包的应用程序,它在某些端口(例如 8080)上使用 servlet 启动 tomcat。 我还需要向这个应用程序添加 activemq 代理(客户端),使用它嵌入相同的 JVM。

我想我会用类似

的代码来做
BrokerService broker = new BrokerService();
broker.setBrokerName("myBroker");
broker.addConnector("tcp://localhost:40001");
broker.start();

我的问题是我必须在另一个端口上启动它吗?是否有可能在网络服务器启动的同一端口上启动它?

你不能那样做,因为你的应用程序 "binds" 到端口并获得了它的独占所有权。在纯逻辑术语中,操作系统如何知道将请求转发到哪个应用程序 (Tomcat / ActiveMQ)?

为了执行您需要的操作,您必须将另一个名为 "port multiplexer" 的应用绑定为中介。这是一个示例:https://github.com/joushou/serve2d