Мы используем BizTalk Server для отправки сообщений через MSMQ. Принимающая система требует, чтобы каждое сообщение имело свойство расширения, установленное в guid (как байтовый массив). MSDN документирует свойство Extension для MSMQMessage here и (в .NET) here.Как настроить расширение сообщений MSMQ с помощью адаптера MSMQ BizTalk?
Это просто установить свойство расширения в .NET:
const string messageContent = "Message content goes here";
var encodedMessageContent = new UTF8Encoding().GetBytes(messageContent);
// Create the message and set its properties:
var message = new System.Messaging.Message();
message.BodyStream = new System.IO.MemoryStream(encodedMessageContent);
message.Label = "AwesomeMessageLabel";
// Here is the key part:
message.Extension = System.Guid.NewGuid().ToByteArray();
// Bonus! Send the message to the awesome transactional queue:
const string queueUri = @"FormatName:Direct=OS:localhost\Private$\awesomeness";
using (var transaction = new System.Messaging.MessageQueueTransaction())
{
transaction.Begin();
using (var queue = new System.Messaging.MessageQueue(queueUri))
{
queue.Send(message, transaction);
}
transaction.Commit();
}
Однако MSMQ адаптер BizTalk в не поверхности расширения сообщения, как то, что может быть установлено (обратитесь к list of adapter properties on MSDN). Я также декомпилировал сборку Microsoft.BizTalk.Adapter.MSMQ.MsmqAdapter, которая поставляется с BizTalk 2013 и не может найти ссылки на свойство расширения.
Как установить расширение сообщения MSMQ, отправленного BizTalk? Я бы предпочел не создавать пользовательский адаптер, если это возможно, поскольку для этого требуется большое количество накладных расходов и текущего обслуживания.
Это отличный инструмент для создания программно MSMQ отправить порты, но, к сожалению, мы все еще можем только установить «пользовательские свойства» уже определены с помощью адаптера MSMQ. Это не позволяет нам добавлять дополнительные свойства, такие как расширение сообщения. – schellack