RabbitMQ 실천 경험
2218 단어 rabbitmq
가상 호스트
RabbitMQ 서버 서비스를 여러 개의 서로 다른 응용 프로그램으로 할 수 있으며 응용 프로그램은 서로 다른 가상 호스트의 구분을 통해 메시지 논리상의 독립을 제공한다.
#
rabbitmqctl add_vhost test
#
rabbitmqctl delete_vhost test
# RabbitMQ
rabbitmqctl list_vhosts
메시지 저장
RabbitMQ는 Queue의 메시지를 디스크와 RAM 두 가지로 저장합니다.디스크 방식으로 메시지 데이터가 저장됩니다.rdq 접두사로 명명된 파일에 있습니다.대부분의 경우 메시지 관련 데이터 저장은 디스크 방식을 사용하고 다른 고가용 수단이 있으면 RAM을 선택할 수 있다.메시지 지속화는Queue, Message, Exchange 세 부분과 관련된다.1. Queue 지속화는durable을true로 설정함으로써 이루어집니다.
com.rabbitmq.client.AMQP.Queue.DeclareOk queueDeclare() throws IOException;
/**
* exclusive , true
* autoDelete , true 。
*/
com.rabbitmq.client.AMQP.Queue.DeclareOk queueDeclare(String var1, boolean var2, boolean var3, boolean var4, Map var5) throws IOException;
void queueDeclareNoWait(String var1, boolean var2, boolean var3, boolean var4, Map var5) throws IOException;
com.rabbitmq.client.AMQP.Queue.DeclareOk queueDeclarePassive(String var1) throws IOException;
2. 메시지 지속화 재부팅 후 Queue에서 보내지 않은 메시지도 계속 존재하려면 메시지 지속화를 설정해야 합니다.
/**
* BasicProperties PERSISTENT_TEXT_PLAIN , BasicProperties deliveryMode 2
*/
void basicPublish(String var1, String var2, BasicProperties var3, byte[] var4) throws IOException;
void basicPublish(String var1, String var2, boolean var3, BasicProperties var4, byte[] var5) throws IOException;
void basicPublish(String var1, String var2, boolean var3, boolean var4, BasicProperties var5, byte[] var6) throws IOException;
3. Exchange 지속화는 Exchange를 선언할 때durable 가입을 지원하는 방법을 사용하여true로 설정합니다.
메시지 신뢰성 제안
만약에 소식이 믿을 만한 배달을 확보하기 위해 생산자가 단독 채널에서 메시지 응답 대기열을 감청할 수 있다. 그러면 소비자가 메시지에 응답할 때 생산자는 소비자가 메시지를 받았는지 검증할 수 있고 일정 시간 내에 받지 못하면 다시 발송할 수 있다.상기 세 가지 모두 지속화를 설정해도 메시지 사용 과정에서 잃어버리지 않을 것을 보장할 수 없다.예를 들어 소비자가 메시지를 받았을 때 autoAck은true이지만 소비단이 처리하지 못하고 붕괴된 상황에서 메시지를 잃어버렸다.이 경우 autoAck를false로 설정하고 소비 논리가 완성된 후에 수동으로 확인해야 한다.
통로
가능한 한 하나의 연결에 여러 개의 채널을 만들어서 라인이 하나의 채널을 공유하는 것을 피한다.
총결산
RabbitMQ의 가장 큰 장점은 비교적 유연한 메시지 루트 정책, 고가용성, 신뢰성, 풍부한 플러그인을 제공하는 데 있다. 그러나 AMQP 프로토콜 자체가 비교적 무게를 실현하기 때문에 처리량에 있어서 하위권에 처하게 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
RabbitMQ를 사용하여 다음 주차장 시뮬레이션을 비동기식으로 만들려면 어떻게 해야 합니까?Java의 동시성에 대한 다양한 접근 방식을 배우고 이해하려고 합니다. 저는 주차장 시뮬레이션의 직렬화된 구현을 가지고 있습니다. 프로그램이 대신 Rabbitmq를 사용하도록 만들고 싶습니다. 어떻게 해야 합니까? ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.