使用activemq的名称模式创建/访问经过身份验证的队列

使用activemq的名称模式创建/访问经过身份验证的队列,activemq,apache-camel,Activemq,Apache Camel,您好,我想配置activemq以保护队列访问和创建 client.<client-id>.sub client..sub client..pub 然后创建一个骆驼重定向到一个唯一队列,在重定向的消息上添加客户端id头 有什么建议吗 PS请忘记我的英语您处理ActiveMQ队列和主题授权的方式是通过前缀和用户级别的authorizationPlugin <authorizationPlugin> <map> <autho

您好,我想配置activemq以保护队列访问和创建

client.<client-id>.sub
client..sub
client..pub

然后创建一个骆驼重定向到一个唯一队列,在重定向的消息上添加客户端id头

有什么建议吗


PS请忘记我的英语

您处理ActiveMQ队列和主题授权的方式是通过前缀和用户级别的authorizationPlugin

<authorizationPlugin>
       <map>
         <authorizationMap>
           <authorizationEntries>
             <authorizationEntry queue="client.client123.>" read="client123" write="client123" admin="admins" />
             <authorizationEntry topic="client.client123.>" read="client123" write="client123" admin="admins"/>
              ... etc. for other clients.
           </authorizationEntries>

问题是什么?你试过什么?什么不管用?我不知道怎么办。我需要一个建议,使一个poc(安全处理程序/策略,听众,我不知道)-嗨佩特,谢谢你的回答。是否可以对客户端id使用变量或通配符?客户端id是动态的。您好,在我的示例中,路由使用的是动态客户端id。显然,对于授权,您需要配置每一个
 from("jms:queue:client.>")
        .process(new Processor(){
            @Override
            public void process(Exchange exchange) throws Exception {
                String queue = exchange.getIn().getHeader("JMSDestination").toString();
                // queue name is: queue://client.<client_id>.xx
                String clientId = queue.substring(queue.indexOf(".")+1);
                int idx = clientId.lastIndexOf(".");
                clientId = clientId.substring(0,idx);
                System.out.println("ClientID: " + clientId);
                exchange.getIn().setHeader("SendingClientId", clientId);
            }

        })
        .to("jms:queue:collector.queue");