我们想使用 ApacheMQ(5.x 或 Artemis)作为 WebSocket 服务器,向 Internet 客户端发送更新通知。为了安全地工作,我们需要配置一个接受器,这样它就不能发布任何东西,只能订阅一个命名的主题;有关该主题的事件将源自内部网络。没有一个外部订阅者是永久的。
据我所知,这种过滤必须在应用程序级别完成,因为即使只是订阅一个地址也需要双向流量。
我在 ActiveMQ 5 和 Artemis 中找到了关于如何对生产者进行速率限制的指南,但这并不是我们想要实现的——我们希望这个特定的接受者根本无法发布。
我将不胜感激针对 ActiveMQ 5 和 Artemis 的解决方案。
ActiveMQ 5.x 可以做到这一点!
在你想要设置 'maximumProducersAllowedPerConnection=0' 的 transportConnector 上:
<transportConnector uri="nio://0.0.0.0:61616" maximumProducersAllowedPerConnection="0" ../>
客户会得到这个异常:
Caused by: javax.jms.JMSException: Can't add producer on connection ID:broker-62244-1682603624916-4:1: at maximum limit: 0