RabbitMQ 안내
4683 단어 RabbitMQ
RabbitMQ 는 Erlang 언어 로 이 루어 진 AMQP(고급 메시지 큐 프로 토 콜)메시지 미들웨어 입 니 다.
RabbitMQ 의 특징:신뢰성(지구 화,전송 확인,발표 확인),유연 한 경로(교환기 진행 경로),확장 성(클 러 스 터),높 은 가용성(미 러 설정),다양한 프로 토 콜(AMQP,STOMP,MQTT),다 중 언어 클 라 이언 트(자바,C\#,Python,Ruby,PHP),관리 인터페이스,플러그 인 메커니즘.
management plugin 플러그 인의 접근 포트 는 15672 입 니 다.guest 이 계 정 은 기본적으로 로 컬 네트워크 localhost 를 통 해 만 접근 할 수 있 고 원 격 네트워크 접근 이 제한 되 어 있 습 니 다.
생산자 클 라 이언 트 코드 예시:
package com.lmy.demo.rabbitmq.demo;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
public class RabbitProducer {
private static final String EXCHANGE_NAME="exchange_demo";
private static final String ROUTING_KEY="routingkey_demo";
private static final String QUEUE_NAME="queue_demo";
private static final String IP_ADDRESS="127.0.0.1";
private static final int PORT=5672; //rabbitMQ 5672
public static void main(String[] args) throws Exception {
ConnectionFactory factory=new ConnectionFactory();
factory.setHost(IP_ADDRESS);
factory.setPort(PORT);
factory.setUsername("root");
factory.setPassword("root");
Connection connection=factory.newConnection();//
Channel channel=connection.createChannel();//
// type="direct"、 、
channel.exchangeDeclare(EXCHANGE_NAME,"direct",true,false,null);
// 、 、
channel.queueDeclare(QUEUE_NAME, true, false,false,null);
//
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);
// ;hello world
String message="Hello world";
channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN,
message.getBytes());
// //
// channel.close();
// connection.close();
}
}
소비자 클 라 이언 트 코드:
package com.lmy.demo.rabbitmq.demo;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import com.rabbitmq.client.Address;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;
public class RabbitConsumer {
private static final String QUEUE_NAME="queue_demo";
private static final String IP_ADDRESS="127.0.0.1";
private static final int PORT=5672;
public static void main(String[] args) throws Exception {
Address[] addresses=new Address[]{
new Address(IP_ADDRESS,PORT)
};
ConnectionFactory factory=new ConnectionFactory();
factory.setUsername("root");
factory.setPassword("root");
// demo ,
Connection connection=factory.newConnection(addresses);//
final Channel channel=connection.createChannel();//
channel.basicQos(64);// ack
Consumer consumer=new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
BasicProperties properties, byte[] body) throws IOException {
System.out.println("recv message:"+new String(body));
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
channel.basicAck(envelope.getDeliveryTag(),false);
}
};
channel.basicConsume(QUEUE_NAME,consumer);
channel.basicConsume(QUEUE_NAME, false, "myConsumerTag",new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
BasicProperties properties, byte[] body) throws IOException {
String routingKey=envelope.getRoutingKey();
String contentType=properties.getContentType();
}
});
// ,
TimeUnit.SECONDS.sleep(5);
channel.close();
connection.close();
}
}
Default Consumer 를 계승 하 는 방식 으로 소 비 를 실현 하 는 것 을 추천 하고,Queueing Consumer 를 사용 하 는 방식 으로 소 비 를 실현 하 는 것 을 추천 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Golang "일등 시민"- 함수 (function)2. 성명 함수: 일반 함수는 반드시 먼저 성명해야 호출할 수 있다 다섯째, 함수 변수 - 함수를 값으로 변수에 저장 익명 함수 성명, 호출 익명 함수 리셋 함수 실현 익명 함수 구현 조작 봉인 함수 자체가 값으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.