ActiveMQ 中的订阅者专用接受器端口 - 这可能吗?

问题描述 投票:0回答:2

我们想使用 ApacheMQ(5.x 或 Artemis)作为 WebSocket 服务器,向 Internet 客户端发送更新通知。为了安全地工作,我们需要配置一个接受器,这样它就不能发布任何东西,只能订阅一个命名的主题;有关该主题的事件将源自内部网络。没有一个外部订阅者是永久的。

据我所知,这种过滤必须在应用程序级别完成,因为即使只是订阅一个地址也需要双向流量。

我在 ActiveMQ 5Artemis 中找到了关于如何对生产者进行速率限制的指南,但这并不是我们想要实现的——我们希望这个特定的接受者根本无法发布。

我将不胜感激针对 ActiveMQ 5 和 Artemis 的解决方案。

activemq activemq-artemis
2个回答
0
投票

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

-1
投票

这两个经纪人都没有明确的功能来完全满足您的需求。

但是,通常你会强制执行这种安全限制。在您的情况下,“Internet 客户端”的角色/组只允许订阅特定主题,not 根本不允许发送。

ActiveMQ Artemis 的安全文档位于here,ActiveMQ“Classic”的安全文档位于here

© www.soinside.com 2019 - 2024. All rights reserved.