Я бы предложил использовать идентификатор корреляции. 1. Необходимо построить идентификатор корреляции (длина 38-42 символов). Можно построить любым способом, например, построить его по GUID
/// <summary>
/// Generate random correlation ID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\xxxxx)
/// </summary>
/// <returns>string</returns>
/// <param name="id">if want specific id in end of generated id, else it will be random forom 1- 10000</param>
public string GenerateId(int id = 0)
{
if (id == 0)
{
Random r = new Random();
id = r.Next(1, 10000);
id = r.Next(1, 10000);
}
return $"{Guid.NewGuid().ToString()}\\{id.ToString()}";
}
Укажите сообщение с созданным идентификатором корреляции.
Message message = new Message();
string messageUniqueID = GenerateId();
message.CorrelationId = messageUniqueID;
Получите его по этому идентификатору корреляции.
string yourQueuePath= "...";
MessageQueue queue = new MessageQueue(yourQueuePath);
Message myMessage = queue.ReceiveByCorrelationId(messageUniqueID);
Идентификаторы можно указывать и генерировать в коде или любым другим способом (сохранить в БД и т. Д. c.)