단일 RabbitMQ에 몇개 까지 Connection(MAX)이 되는지 해보자. |
□ 단일 노드에서 지원할 수있는 동시 연결 수를 제한하는 요소
▶열린 파일 핸들 (소켓 포함)의 최대 수 ▶커널 강제 리소스 제한 ▶각 연결에 사용 된 RAM 크기 ▶각 연결에 사용 된 CPU 리소스의 양 ▶Erlang 프로세스의 최대 수
|
□ 서버 및 설정
|
□ Dependency
<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.1</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.5.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-erlang</artifactId> <version>1.4.3.RELEASE</version> </dependency> |
□ QOS LEVEL
▶ 0=그냥 데이터 던짐 (RabbitMQ 지원) ▶ 1=전달완료확인 (RabbitMQ 지원) ▶ 2=최종목적지까지 처리완료 (지원안함 X)
|
□ Test
int qos = 1; String topic = "test"; MemoryPersistence persistence = new MemoryPersistence(); try {
//우선 500개만 해보자 for(int a= 0 ; a < 500 ; a++){ MqttClient client = new MqttClient("tcp://xxx.xxx.xxx.xxx:1883", "testname" + a, persistence); MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); connOpts.setUserName("rabbitmq"); connOpts.setPassword("rabbitmq".toCharArray()); client.connect(connOpts); System.out.println(a); }
/* 메세지 보내는 부분 MqttMessage message = new MqttMessage(); message.setQos(qos); // crc level while (true) {
String dump = "보낼 메세지"; message.setPayload(dump.getBytes()); client.publish(topic, message);
message.setPayload(dump.getBytes()); client.publish(topic, message); Thread.sleep(1000); // 200 ms } client.disconnect(); */
} catch (Exception e) { e.printStackTrace(); }
|
□결과
310개 부터 에러 발생 리눅스 쓰레드 제한 걸림 해결하려면 올려주자. |
'빅데이터' 카테고리의 다른 글
Elasticsaerch + SparkStreaming (0) | 2018.03.14 |
---|---|
kibana 설치 (0) | 2018.02.12 |
zeppelin 설치 (0) | 2017.06.26 |
RabbitMQ & Spark Streaming Test (0) | 2017.05.17 |
(설치)RabbitMQ Install Centos 6.X (0) | 2017.05.15 |