0

I have an Azure Topic named "AZTopic" and i have a subscription with three rule description added to it. The rule description has sql filter based on a property priority. When i try to access the data from the subscription i am getting null as broker message.

private static void CreateSubscription(string filterName, string subscriptionName)
    {            
        if (!namespaceManager.SubscriptionExists(Constants.Topic, subscriptionName))
        {
           namespaceManager.CreateSubscription(Constants.Topic, subscriptionName);                
        }
        SubscriptionClient subscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, Constants.Topic, subscriptionName);

        var rules = namespaceManager.GetRules(Constants.Topic,Constants.P0Subscription);
        foreach (var rule in rules)
        {
            subscriptionClient.RemoveRule(rule.Name);
        }

        var P0FilterRule = new RuleDescription()
        {
            Filter = new SqlFilter(Constants.P0Filter),
            Name = "P0"
        };
        var P1FilterRule = new RuleDescription()
        {
            Filter = new SqlFilter(Constants.P1Filter),
            Name = "P1"
        };
        var P2FilterRule = new RuleDescription()
        {
            Filter = new SqlFilter(Constants.P2Filter),
            Name = "P2"
        };

        subscriptionClient.AddRule(P0FilterRule);
        subscriptionClient.AddRule(P1FilterRule);
        subscriptionClient.AddRule(P2FilterRule);           
    }

This is my subscription creation code

private QueueMessage GetMessage(string filterName, string subscriptionName)
    {
        BrokeredMessage receivedMessage = new BrokeredMessage();
        QueueMessage messageObject = new QueueMessage();
        SubscriptionClient Client = SubscriptionClient.CreateFromConnectionString(Settings.connectionString, Constants.Topic, subscriptionName);
        try
        {
            receivedMessage = Client.Receive();
            if (receivedMessage != null)
            {
                messageObject = receivedMessage.GetBody<QueueMessage>();
                receivedMessage.Complete();
            }
        }
        catch (Exception ex)
        {
            Logger.Log(ex.GetBaseException().Message, LogLevel.Informational, "");
            receivedMessage.Abandon();
        }

        return messageObject;
    }

This is my message reading code

Arjun Menon
  • 553
  • 2
  • 8
  • 29
  • what is the "type" of the message that you send to the topic. ? is it same as type QueueMessage? also you can see if the message actually gets filtered and comes to right subscription using servicebus explorer. – Aravind Jul 07 '16 at 06:57
  • Can you add the rules you set up for the subscription (not the Constants) an show us how you send your message please ? – Thomas Jul 07 '16 at 23:22

0 Answers0