gpt4 book ai didi

tomcat - 受防火墙保护的 ActiveMQ 服务器的 WS 代理

转载 作者:行者123 更新时间:2023-11-28 22:12:09 24 4
gpt4 key购买 nike

有没有办法让浏览器客户端通过 Tomcat/Jetty 服务器通过 websockets 进行连接,并将 JMS 连接传递给 ActiveMQ 服务器?

我们希望将我们的 JMS 服务器保持在防火墙后面,但允许已经连接到我们的 Tomcat 应用程序服务器的客户端认为同一主机通过 websockets 连接到 ActiveMQ。

最佳答案

JMS 是客户端 API,而不是协议(protocol)。

使用 ActiveMQ JMS 客户端,您将使用 OpenWire,它不能通过 websocket 发送(没有主要的编码练习)。您可以做的是代理其中一种实际适用于 websockets 的传输方式——MQTT 或 STOMP。

我建议在您的网络应用程序 (tomcat) 和 ActiveMQ 之前使用一些轻量级反向代理。这可能是 Apache httpd 或 Nginx。即使没有 websockets,使用一些久经考验的 web 代理来保护您的 java 服务器也是一个好主意。

我已经通过 WebSocket 使用 Web 服务器 Nginx 和 MQTT 完成了这样的事情,并且效果很好。虽然我猜 Stomp 与 WebSocket 没有区别。好处是您还可以在代理服务器中轻松终止 SSL,这通常比在应用服务器中这样做更快/更容易。

这对在客户端使用 JMS api 没有真正帮助。不确定那里是否有任何生产准备就绪。不过,跳过 JMS 规范并在 Websocket 客户端上使用 STOMP 应该可以做到这一点。

示例 Nginx 配置代理 WebSocket(并在这种情况下终止 SSL/TLS),比如 ActiveMQ 服务器。

upstream websocket {
server example.com:61623;
}
server {
listen 8883 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/bundle2015.cer;
ssl_certificate_key /etc/nginx/ssl/server2015.key;

location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 120s;
}
}

关于tomcat - 受防火墙保护的 ActiveMQ 服务器的 WS 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com