2015-06-23 2 views
0

Используя Azure Service Bus, существует ли способ записи на брокерское сообщение, откуда возникло это сообщение? Хотя я мало функционального использования, я вижу, что это полезный инструмент для DevOps, если вы устраняете проблему.Идентификация происхождения сообщения в ESB

Например, представьте сообщение UpdateCustomer, которое может быть опубликовано как из биллинговых, так и для CRM-приложений на одном ESB.

Я думал о префиксе BrokeredMessage.MessageId с именем приложения, но это кажется довольно взломанным. Есть ли лучший способ записать происхождение сообщения?

Решение

Благодаря Gaurav Мантри за ответ, я пошел и реализован метод расширения на BrokeredMessage объекта, чтобы для добавления словаря пользовательских свойств:

Использование

BrokeredMessage message = new BrokeredMessage(); 

var customMessageProperties = new CustomMessageProperties() 
{ 
    MessageOrigin = this.PublisherName, 
}; 

message.AddCustomProperties(customMessageProperties.AllCustomProperties); 

И метод расширения

public static class BrokeredMessageExtensionMethods 
{ 
    public static void AddCustomProperties(this BrokeredMessage brokeredMessage, Dictionary<string, string> properties) 
    { 
     foreach (var property in properties) 
     { 
      brokeredMessage.Properties.Add(property.Key, property.Value); 
     } 
    } 
} 

Надеюсь, это может помочь кому-то.

+2

Вы можете попробовать собственные свойств на посредничестве сообщения, которое получает список пар имя/значение: https://msdn.microsoft.com/en-us/library/microsoft. servicebus.messaging.brokeredmessage.properties.aspx. –

+0

Хорошо ли работает! Если вы хотите написать это как ответ, я приму это. – MrDeveloper

ответ

1

Вы можете попробовать пользовательские свойства в брокерском сообщении, которое принимает список пар имя/значение: https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.properties.aspx.

Что-то вроде:

   var queueClient = QueueClient.CreateFromConnectionString(ConnectionString, path); 
       var msg = new BrokeredMessage("Message Content"); 
       msg.Properties.Add("Source", "Message Source"); 
       await queueClient.SendAsync(msg); 

 Смежные вопросы

  • Нет связанных вопросов^_^