There are times when we need to forward a message from a subscription to another topic or queue. Until now we had to use a worker role that took the message from the subscription and adding it to the second topic.
From now, a subscription supports this great functionality, by default. We only need to set the name of the topic or queue of the Service Bus where we want to forward the message.
SubscriptionDescription description = new SubscriptionDescription("topic1","subscription1");
description.ForwardTo = "topic2";
SqlFilter filter = new SqlFilter("FW = true");
namespaceManager.CreateSubscription(description, filter);
In this setup, all the messages that have the property FW set to true will be send automatically from subscription1 to topic2.MessagingFactory messageFactory =
MessagingFactory.CreateFromConnectionString(connectionString);
MessageSender messageSender = messageFactory.CreateMessageSender("topic1");
BrokeredMessage message = new BrokeredMessage();
messageToSend.Properties.Add("FW", true);
messageSender.Send(message);
Don’t forget that the message is not automatically forward to the next topic. Because of this, if you write a unit test you will need to wait 5-10 seconds before checking the second subscription.SubscriptionClient messageReceiver =
messageFactory.CreateSubscriptionClient("topic2", "subscription1");
BrokeredMessage message = messageReceiver.Receive(new TimeSpan(0, 0, 5));
We saw how easy is to forward a message from one subscription to another topic. We don’t need a consumer for a subscription or something similar. This is a great feature that permit us to define workflows using Service Bus Topic.
0 comments:
Post a Comment