我一直在尝试配置我的 activemq 服务器,以便匿名客户端可以订阅主题(他们将无法创建或发布主题)。
我已经在我的代理配置上相应地设置了权限:
<plugins>
    <simpleAuthenticationPlugin anonymousAccessAllowed="true">
        <users>
            <authenticationUser username="system" password="manager"
                groups="anonymous,admins"/>
        </users>
    </simpleAuthenticationPlugin>
  <!--  Lets configure a destination based authorization mechanism -->
  <authorizationPlugin>
    <map>
      <authorizationMap>
        <authorizationEntries>
          <authorizationEntry queue=">" read="admins,anonymous" write="admins" admin="admins" />
          <authorizationEntry topic=">" read="admins,anonymous"  write="admins" admin="admins" />
        </authorizationEntries>
      </authorizationMap>
    </map>
  </authorizationPlugin>
</plugins>
根据我在网上找到的几个教程,我一直在使用下面的代码进行订阅。但是,这个主题消费者代码以及我找到的所有主题代码都创建了一个要绑定的 activemq 主题(如果该主题已经存在,则为事件),因此,只有当我也向用户授予管理员权限时,它才会被授权。 ..有没有办法在不创建主题的情况下订阅主题?
     ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory(connectionString);
     connection = connectionFactory.createConnection();
     session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
     destination = session.createTopic(topicName);
     MessageConsumer consumer = null;
     consumer = session.createConsumer(destination);
     consumer.setMessageListener(this);
     connection.start();