Вы не упомянули, какой у вас транспорт, если вы пытаетесь просто отправить сообщение в пункт назначения или опубликовать событие? Некоторые из этих вариантов могут изменить ответ здесь, но вы должны понять его суть.
Вы можете интегрироваться с NServiceBus напрямую, помещая сообщения в очередь. Если вы посмотрите документацию, то увидите, что под каждым транспортом есть раздел «Сценарии», в котором показано, как помещать сообщения прямо в очередь. Если вы хотите интегрироваться с MSMQ, вы можете найти страницу документации здесь.
Сообщения NSB идут с заголовками. Большинство значений в заголовке являются необязательными, и они идут с разумными значениями по умолчанию, поэтому все, что вам действительно нужно, это тип сообщения (фактическое имя типа для полезной нагрузки сообщения). Предполагая, что вы хотите выполнить отправку, вы можете увидеть все заголовки, которые используются здесь. Опять же, вам все это не нужно.
Чтобы ответить на ваш вопрос: для интеграции с NSB из вашего кода C ++ вы можете перевести этот код C # на C ++, и это все, что вам нужно:
public static void SendMessage(string queuePath, string messageBody, List<HeaderInfo> headers)
{
using (var scope = new TransactionScope())
{
using (var queue = new MessageQueue(queuePath))
using (Message message = new Message())
{
message.BodyStream = new MemoryStream(Encoding.UTF8.GetBytes(messageBody));
message.Extension = CreateHeaders(headers);
queue.Send(message, MessageQueueTransactionType.Automatic);
}
scope.Complete();
}
}
public static byte[] CreateHeaders(List<HeaderInfo> headerInfos)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<HeaderInfo>));
using (var stream = new MemoryStream())
{
serializer.Serialize(stream, headerInfos);
return stream.ToArray();
}
}
public class HeaderInfo
{
public string Key { get; set; }
public string Value { get; set; }
}
На заметку:
- MSMQ работает с TransactionScope. Я не думаю, что в IoT это вариант, зависящий от используемого вами устройства.
- Вам все еще нужна библиотека, чтобы поместить сообщение в MSMQ.
Если бы вы выбрали транспорт SQL, это упростило бы эту интеграцию, поскольку все, что вам нужно было сделать, это написать запись в базе данных (которую вы также можете найти скрипт для здесь).
person
Hadi Eskandari
schedule
30.08.2015