使用 Azure 服务总线,是否有一种方法可以记录该消息源自的代理消息?虽然功能用途不大,但如果解决问题,我可以将其视为 DevOps 的有用工具。
例如,假设一条UpdateCustomer
消息可以从同一 ESB 上的计费和 CRM 应用程序发布。
我曾考虑过BrokeredMessage.MessageId
在应用程序名称前加上前缀,但这似乎很老套。有没有更好的方法来记录消息的来源?
解决方案
感谢 Gaurav Mantri 的回答,我已经在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);
}
}
}
希望这可能对某人有所帮助。