public abstract interface Queue extends java.util.Queue
{
public abstract boolean add(String paramString, Object paramObject);
public abstract Object element(String paramString);
public abstract boolean offer(String paramString, Object paramObject);
public abstract Object peek(String paramString);
public abstract Object poll(String paramString);
public abstract Object remove(String paramString);
public abstract void setServers(String[] paramArrayOfString);
public abstract int size(String paramString);
public abstract void init();
public abstract void destroy();
}
6.编写实现类
import java.util.Collection;
import java.util.Iterator;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
public class QueueImpl implements Queue
{
public QueueImpl() {
super();
}
private String[] servers = new String[0];
private ReferenceConfig<Queue> reference = null;
public void setServers(String[] servers)
{
if (servers == null)
this.servers = new String[0];
else
this.servers = servers;
}
public void destroy()
{
if (this.reference != null) {
this.reference.destroy();
this.reference = null;
}
}
public void init()
{
ApplicationConfig application = new ApplicationConfig();
application.setName("queue");
RegistryConfig registry = new RegistryConfig();
String zookeeperAddress = "zookeeper://";
for (int i = 0; i < this.servers.length; i++) {
zookeeperAddress = zookeeperAddress + this.servers;
if ((this.servers.length > 1) && (i == 0)) {
zookeeperAddress = zookeeperAddress + "?backup=";
}
if ((i < this.servers.length - 1) && (i > 0)) {
zookeeperAddress = zookeeperAddress + ",";
}
}
MonitorConfig monitor = new MonitorConfig();
monitor.setProtocol("registry");//监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心
registry.setAddress(zookeeperAddress);//注册中心服务器地址
this.reference = new ReferenceConfig(); //用于创建一个远程服务代理,可以像使用本地bean一样使用demoService
this.reference.setApplication(application);
this.reference.setRegistry(registry);//设置注册中心
this.reference.setMonitor(monitor);
this.reference.setInterface(Queue.class);//
}
public boolean add(String queueName, Object e)
{
Queue queue = (Queue)this.reference.get();
return queue.add(queueName, e);
}
public Object element(String queueName)
{
Queue queue = (Queue)this.reference.get();
return queue.element(queueName);
}
public boolean offer(String queueName, Object e)
{
Queue queue = (Queue)this.reference.get();
return queue.offer(queueName, e);
}
public Object peek(String queueName)
{
Queue queue = (Queue)this.reference.get();
return queue.peek(queueName);
}
public Object poll(String queueName)
{
Queue queue = (Queue)this.reference.get();
return queue.poll(queueName);
}
public Object remove(String queueName)
{
Queue queue = (Queue)this.reference.get();
return queue.remove(queueName);
}
public boolean add(Object e)
{
return false;
}
public Object element()
{
return null;
}
public boolean offer(Object e)
{
return false;
}
public Object peek()
{
return null;
}
public Object poll()
{
return null;
}
public Object remove()
{
return null;
}
public boolean addAll(Collection c)
{
return false;
}
public void clear()
{
}
public boolean contains(Object o)
{
return false;
}
public boolean containsAll(Collection c)
{
return false;
}
public boolean isEmpty()
{
return false;
}
public Iterator iterator()
{
return null;
}
public boolean remove(Object o)
{
return false;
}
public boolean removeAll(Collection c)
{
return false;
}
public boolean retainAll(Collection c)
{
return false;
}
public int size()
{
return 0;
}
public Object[] toArray()
{
return null;
}
public Object[] toArray(Object[] a)
{
return null;
}
public int size(String queueName)
{
Queue queue = (Queue)this.reference.get();
return queue.size(queueName);
}
}