RabbitMq与mqqt协议与ubuntu

时间:2016-11-28 12:32:06

标签: java windows multithreading rabbitmq mqtt

我正在使用带有paho.mqttv3协议的RabbitMq 3.6.6 我的简单代码如

int max_connections =400000;
String broker = "tcp://xxx.xxx.x.xx:1883";
String clientId = "Publisher";
String content="Hii";
int qos=1;
String topic="Cluster";


MemoryPersistence persistence = new MemoryPersistence();
MqttClient sampleClient[] = new MqttClient[max_connections];

Thread t[] = new Thread[max_connections];
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);

for (int i = 0; i < max_connections; i++) {
    try {
        sampleClient[i] = new MqttClient(broker, clientId + "" + i, persistence);
        sampleClient[i].connect(connOpts);
    } catch (MqttException ex) {
        ex.printStackTrace();
        return;
    } 
}

我得到的例外情况如下:

  

线程“MQTT Con:Publisher2919”中的异常   java.lang.OutOfMemoryError:无法在。创建新的本机线程   java.lang.Thread.start0(Native Method)at   java.lang.Thread.start(Thread.java:714)at   org.eclipse.paho.client.mqttv3.internal.CommsSender.start(CommsSender.java:60)     在   org.eclipse.paho.client.mqttv3.internal.ClientComms $ ConnectBG.run(ClientComms.java:654)     在java.lang.Thread.run(Thread.java:745)

我的系统RAM是8 GB的Corei5处理器。

  

我也尝试在Windows PC中使用相同的错误但它的Upto 7k   连接

so any OS level Configuration in Ubuntu to make more Connection?

1 个答案:

答案 0 :(得分:0)

错误消息非常自我解释。尝试创建400,000个线程并不是一件真实的事情。

我假设您正在尝试加载测试您的MQTT代理,您可以更好地查看来自Apache的JMeter,它可以在分布式模式下运行并使用多台计算机来生成非常高的负载。