使用smack测试xmpp服务器压力简单实现:
package com.qbg.smack;
import java.sql.ResultSet;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.provider.IQProvider;
import org.jivesoftware.smack.provider.ProviderManager;
import org.xmlpull.v1.XmlPullParser;
import com.qbg.util.CyptUtil;
import com.qbg.util.DBUtil;
public final class SmackClient {
private final AtomicInteger success = new AtomicInteger();
private final static ConcurrentLinkedQueue<User> users = new ConcurrentLinkedQueue<SmackClient.User>();
private final ExecutorService exec;
private CyclicBarrier barrier;
private int threadCount;
private int start;
private long sleeptime;
public SmackClient(){
this(500,0,1000);
}
public SmackClient(final int threadCount,final int start,final long sleeptime){
this.threadCount = threadCount;
this.sleeptime = sleeptime;
this.start = start;
this.exec = Executors.newFixedThreadPool(threadCount);
System.out.println("初始化测试数据...");
initQueue();
System.out.println("测试数据初始化完毕,数据范围:"+start+"~"+(start+threadCount));
this.barrier = new CyclicBarrier(threadCount, new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e)