프로그래밍/RabbitMQ

[RabbitMQ] 파일 송수신 (이미지 송수신)

Victory_HA 2023. 3. 30. 19:48

이전 포스팅 [RabbitMQ] 메시지 송신/수신하기

  • 사실, MessageQueue로 파일을 송/수신 하는것 자체가 목적에 맞지 않습니다.
  • MessageBrocker는 말 그대로 Message만 송/수신 해야합니다.

  • 이번 게시물에서 사이즈가 큰 파일을 메시지에 담아 송/수신 하는 방법을 확인하고,
  • 사이즈가 큰 파일을 메시지에 담아 보낼 때, FTP와 비교하여 속도가 얼마나 차이가 나는지 테스트해봤습니다.

파일 송/수신

publisher

  • msg 송신 시 Byte로 변환 후 message body에 담아 송신합니다.
string ImagePath = @"C:\Users\Desktop\testfile\test.tif";
byte[] imageArray = File.ReadAllBytes(ImagePath);
...
channel.BasicPublish(
    exchange: "",
    routingKey: "hello",
    basicProperties: null,
    body: imageArray);

consumer

  • msg 수신 후 Byte를 File로 변환 후 저장합니다.
// Receive message
consumer.Received += (model, ea) =>
{
    var body = ea.Body.ToArray();
    string ImagePath = @"C:\Users\Desktop\testfile\" + Guid.NewGuid() + ".tif";
    File.WriteAllBytes(ImagePath, body);
};

File 복사 속도 테스트 (RabbitMQ vs FTP)

  • FileSize : 91MB
  • RabbitMQ
    • Publisher -> Consumer에게 File을 메시지에 담아 송신합니다.
    • 메시지 송신 후 수신할 때 까지 소요시간을 측정합니다.
    • 파일을 저장합니다.
      • (메시지 수신 후 파일 저장 시간: 0.01ms미만)