2016-12-07 1 views
1

을, 메시지가 될 이상한 : guid3http @메시지에서 이상한를 얻을 : 나는 messgage으로 GUID를 보내고을받을 때/서비스 버스 BrokeredMessage

: //schemas.microsoft.com/2003/10/Serialization/ $ ed92ba5c-68ed-2a4c-8d89-0a087e47ef11

왜 내가 Guid 만 메시지로 받아들이는지 알 수없는 아이디어가 있습니까?

보낸 사람 :

public void Post(Guid id) { 
      var connectionString = "X"; 
      var queueName = "Send"; 

      var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
      var message = new BrokeredMessage(id);  

      client.Send(message);     
     } 

수신기 :

public string ReadPost() { 
      var connectionString = "X"; 
      var queueName = "Send"; 

      var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
      var message = client.Receive(TimeSpan.FromMinutes(1)); 

      var stream = message?.GetBody<Stream>(); 
      if (stream == null) { return null; } 

      var reader = new StreamReader(stream); 
      var textFromBody = reader.ReadToEnd(); 

      message.Complete(); 

      return textFromBody; 
     } 

답변

1

이 시도 :

message.GetBody<Guid>(); 

대신 스트림을 가져 오는.

서비스 버스 큐는 DataContractSerializer를 사용하여 사용자가보고있는 메시지 본문을 직렬화합니다.

+0

감사합니다. 대신'reader'와'textFromBody'를 제거하고 Guid를 반환 할 수 있습니까 :'var getGuid = message? .GetBody ();'safetly? 처음에는 서비스 버스를 사용하고 있습니다. 편집 : StreamReader 기능을 유지하는 것이 중요하거나 내 목적을 위해 필수적인 경우 묻습니다. – Muppen

+0

네, 그 두 개가 필요하지 않습니다. 이미 GetBody의 Guid가 있습니다. 메시지가 성공적으로 처리 되었으면 다시 완료되지 않도록 메시지를 완료하는 것을 잊지 마십시오. – juunas

+0

좋아요! 감사 :) – Muppen

관련 문제