RocketMQ(9): 메시지 전송(계속)
RocketMQ 네트워크 배포도
설명:rocketmq 시리즈는 모두 rocketmq-4.1.0-incubating으로 소개됩니다.
원본 코드를 읽을 때 일정한 주석을 만들었습니다. 공중번호 [장심 영도] 회답: rocketmq를 기반으로 rocketmq4.1.0에 상세한 중국어 코드 주석을 얻을 수 있습니다.스타, 포크 여러분 환영합니다!
전편 RocketMQ(8): 메시지 발송은 주로 아래의 일반적인 발송 절차를 분석했고 본편은 정시 발송, 순서 발송, 대량 발송 등 상황을 소개할 것이다.
메시지 전송 개요
위의 그림은 아마도 프로덕터가 브로커에게 메시지를 보내는 핵심 논리일 것이다.
비고: 본 편은 정시 발송, 순서 발송, 대량 발송 상황을 소개할 것입니다. 이러한 상황 설명은 모두producer 각도에서 설명합니다. 브로커와 관련된 내용은 브로커 관련 내용을 분석할 때 분석합니다.
정시 발송
무엇이 정시 소식입니까
Producer는 MQ 서버에 메시지를 보내지만 이 메시지가 바로 배달되기를 기대하지 않고 일정 시간 지연된 후에야 Consumer에 배달되어 소비를 합니다.
호출 형식
일반적인 호출과 발송은 기본적으로 별 차이가 없다. 유일하게 메시지 설정이 하나 더 있으면 set Delay Time Level을 설정할 수 있다.코드 호출은 그림과 같습니다.
그럼 이곳의 등급은 무엇을 기입해야 합니까?무엇에 대응합니까?이 후속은 분석할 것이다. 오늘 여기서 간단하게 설명한다.
다른 것은 일반 발송과 다를 것이 없습니다. 관건은 브로커, 후속 분석에 있습니다.
순차 발송
순서대로 보내는 방법
참조:https://help.aliyun.com/document_detail/49319.html?spm=a2c4g.11186623.2.3.21aKRd
호출 형식
구체적인 내용이 호출되는 것을 보면 어떻게 된 일인지 알 수 있다.
sendResult = producer.send(msg, new MessageQueueSelector() {
@Override
public MessageQueue select(List mqs, Message msg, Object arg) {
Integer id = (Integer) arg;
int index = id % mqs.size();
return mqs.get(index);
}
}, orderId);
여기 mqs는 모든 발송할 수 있는 정보를 얻고orderId는 구분하는 데 사용됩니다. 매번 이orderId와 모든 것을 가지고 모델링을 할 때마다 (모든 것이 변하지 않는 상황에서) 하나는 고정된 그 대기열입니다. (대기열은 선진적으로 먼저 나온 것입니다.) 후속 소비는 소비가 이 대기열을 어떻게 처리하는지 분석합니다.
**비고: **여기의 순서도 상대적이다. 만약에 브로커를 추가하거나 브로커가 줄어들면 모델링의 정보가 일치하지 않을 것이기 때문에 알아야 한다.
대량 발송
대량 발송 방법
대량이라는 개념은 모두가 잘 알고 있을 거라고 믿습니다. 많은 조정이 있을 때, 예를 들어 데이터베이스 대량 처리, 일부 요청은 합병 발송 등이 모두 유사하게 이루어집니다. 그러면 rocketmq 대량 발송도 성능을 추구하기 위해서입니다. 특히 수량 등급이 매우 클 때 대량 효과가 매우 뚜렷합니다.
** 비고: ** 대량은 한 무더기를 기다린 후에 발송하는 것이기 때문에 실시간성이 약간 지연될 수 있습니다 (무시할 수 있습니다. 특히 데이터량이 많은 경우).나는 일반적으로 대량을 처리하는 것은 두 차원으로 하나에 도달하면 촉발할 수 있다.주어진 줄에 도달하기2.주어진 시간(예를 들어 3s에 한 번, 이럴 때 데이터량이 부족하면 발송)...
rocketmq는 인터페이스를 제공하고 데이터를 보내는 것일 뿐입니다. 그러면 언제 이 데이터를 보내는 것은 자신의 선택에 따른 것입니다. 즉, 위에서 말한 두 가지가 일반적인 방법입니다.
호출 형식
rocketmq의 장점 중 하나는 대량으로 발송할 때 간단한 전환을 하고 네트워크 전송을 줄이며 학습하는 것이다.
이것들을 a, b, c 등의 형식으로 바꾸다.
로켓mq가 우리에게 대량으로 보낸 예를 살펴보자. 왜 우리에게 두 개의 예를 주었을까?생각이 필요해!!!,다음은 제가 여러분께 설명해 드리겠습니다.
참고: 대량 발송은 같은 topic과 같은waitStore MsgOK가 필요하며 정시 발송은 지원되지 않습니다.
Messages of the same batch should have: same topic, same waitStoreMsgOK and no schedule support.
이런 발송은 대량이다.
이곳의 대량 (대량의 데이터가 너무 많아서) 분할해서 보냈습니다.마지막으로 호출하는 방법은 여전히 같다.
현재 rocketmq는 기본적으로 4M 메시지 내용 (한 개든 대량이든) 을 지원하고 있습니다. 조정이 필요하면 조정할 수 있습니다. 그러면 상한선이 계속 없습니까?그리고 10M을 조정했는데 왜 효력이 발생하지 않았는지 많은 분들이 말씀하십니다. (이곳은 Producer와 서비스 브로커가 모두 조정해야 합니다. 후속 설명, 그리고 netty 네트워크 전송을 바탕으로 하기 때문에 RocketMQ(二):RPC 통신을 보셔야 할 것 같습니다.
여기에서 최대 16M까지만 가능하도록 결정했습니다. 필요하면 수정해야 합니다. 일반적으로 수정을 건의하지 않습니다. 대량 발송의 두 번째 방식과 마찬가지로 대량 발송을 해체하면 됩니다.
읽은 후에 얻은 것이 있다면 좋아요, 관심, 공중호[장심영도]를 눌러서 더 많은 멋진 역사를 찾아보세요!!!
지식별에 가입하여 함께 탐구하자!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.