通过互联网
是的,它暴露了(在端口61616默认)正常的基于TCP端点。但是,这不会是推荐的部署模型 - 更好的模型是使用servlet容器公开基于http的端点,该容器将消息内部交给activemq代理。
有很多好的解决方案,可以做到这一点 -
- Spring Integration,Apache Camel
- 曝光用说Apache CXF(这将带给你一个基于标准的接口),一个web服务端点,它会在内部交接该消息给ActiveMQ。
是的,这是可以做到。目前我们正在运行一千多个“消费者”,通过互联网连接到我们的经纪商。
至于流量在互联网上不安全,我不完全一致:
暴露一个Web服务是一样riskfull作为露出经纪人。最终,您从未100%确信自己的代码或代码或底层应用程序(Apache CXF,Web服务器,应用程序服务器,数据库服务器,消息代理)包含可能存在安全风险的缺陷。二至,HTTP是一样ActiveMQ是尽可能多的TCP流量(践踏或openwire协议)
话虽这么说,你可以采取一切措施,使风险尽可能小。
我们做了以下内容:
用户&密码才能连接到代理(ActiveMQ的suports广泛验证的解决方案,如果需要,你可以滚你自己)
开关端口为不同的号码,以便检测是比较困难的
,如果你有超过消费者藏汉控制,防火墙应用IP过滤器的可连接到哪个IP经纪人(不幸的是,这是不是在我们的情况可能)
加密邮件
我们已经增加了藏汉使用令牌的应用级认证。这样一来,每个消息都在我们自己的应用程序认证
- >如果所有的这些都实现,我认为你是非常安全的,并作为奖励,你不需要web服务的额外层(如果这应用程序需要扩展,您需要与您的代理商平等扩展您的web服务。
简单连接(openwire)应该没问题。坚持标准设置要比试图设置web服务更简单。只要确保使用SSL加密频道。如果你使用简单的密码,他们可能会被公共网络接收(不过不管怎样) - 这就是为什么我更喜欢SSL。实际上,ActiveMQ是通过互联网进行通信的一种非常好的方式,因为它支持事务和持久性,使其能够很好地处理网络稳定性问题。
但是,您需要在运行ActiveMQ服务器的计算机上运行公共IP(或某些NAT /端口转发解决方案,形成一个公共IP)。
你能给我一些关于使用TCP的弱点的解释吗?谢谢 – 2011-02-21 04:53:38