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

时间:2013-01-30 22:35:44

标签: activemq apache-camel

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

client.<client-id>.sub

client.<client-id>.pub

最近创建了一个Camel重定向到一个唯一的队列,在重定向的消息上添加了client-id标头

有什么建议吗?

PS请忘记我的英语

1 个答案:

答案 0 :(得分:0)

您处理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>

这假设client123由任何authentication mechanism进行身份验证。

我没有按照你希望Camel处理路由的方式,但是这样的事情可能是你想要从多个客户端队列路由到带有标题的单个队列(只是一个例子,你可能需要修改)它适合你的情况,有错误处理等。

请注意>用于外卡队列。

 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");