2017-03-03 9 views
1

RabbitMq를 사용하고 있으며 문자열을 대기열에 추가 할 수 있습니다. 대기열을 보면 모든 것이 좋아 보이지만 대기열에서 문자열을 가져 오면 각 문자 사이에 공백이 추가됩니다. .trim() 및 다른 유형의 인코딩을 사용하는 방법부터 모든 것을 살펴 보았습니다. 문자열은 항상 공백으로 나오기 때문에 json으로 비 직렬화 할 수 없습니다.바이트 배열에서 문자열로 변환 할 때 공백을 추가합니다.

올바른 대기열에 있기 때문에 데이터를 가져온 부분을 추가하여 간단한 문자열로 변환합니다.

using (var connection = connectionFactory.CreateConnection()) 
     using (var channel = connection.CreateModel()) 
     { 

     channel.BasicQos(0, 1, false); 

     var consumer = new EventingBasicConsumer(channel); 
     channel.BasicConsume(QUEUE_NAME, false, consumer); 

     consumer.Received += (model, ea) => 
     { 
      var body = ea.Body; 
      var message = System.Text.Encoding.UTF8.GetString(body, 0, body.Length); 
      Console.WriteLine($" [x] Recieved {message}"); 
     }; 

     channel.BasicConsume(QUEUE_NAME, true, "brandon", false, false, null, consumer); 
     Console.ReadLine(); 
     } 
+0

또한 .net 핵심 프로젝트를 사용합니다 –

+0

들어오는 메시지가 UTF-8 대신 UTF-16 일 수 있습니까? – Tim

+0

바이트와 같은 사운드가 유니 코드로 저장 될 수 있습니다. UTF8을 유니 코드로 변경해보십시오. – TwistedStem

답변

0

메시지가 인코딩 될 때와 같이 유니 코드로 인코딩되었습니다. 인코딩을 UTF8로 변경했는데 메시지가 완벽하게 전달되었습니다.