0

使用 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);
        }
    }
}

希望这可能对某人有所帮助。

4

1 回答 1

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);
于 2015-06-25T07:33:01.787 回答