在Redhat MRG / Apache QPID中创建仅浏览队列

时间:2011-11-22 05:49:09

标签: java jms messaging qpid

如何强制队列仅在Red Hat MRG / Apache QPID中浏览,以便客户端只能浏览队列。即使某些客户端试图消除队列中的消息,他也不应该这样做。

1 个答案:

答案 0 :(得分:2)

我认为没有这样的选项来配置代理,但是您的客户端可以在仅浏览模式下连接到队列。

direct://amq.direct//myqueue?browse=true

<强> - 编辑 -

使客户端使用browse_only队列的另一种方法。

package foo.bar;

import java.util.Hashtable;
import java.util.Map;

import org.apache.qpid.client.AMQDestination;
import org.apache.qpid.jndi.PropertiesFileInitialContextFactory;
import org.apache.qpid.jndi.ReadOnlyContext;

public class CustomPropertiesFileInitialContextFactory extends PropertiesFileInitialContextFactory {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    protected ReadOnlyContext createContext(Map data, Hashtable environment) {
        makeDestinationsReadOnly(data);
        return super.createContext(data, environment);
    }
    protected void makeDestinationsReadOnly(Map<String, AMQDestination> dests) {
        for(AMQDestination dest : dests.values()) {
            dest.setBrowseOnly(true);
        }
    }
}