azure servicebus queues and topics

26
Igor Moochnick Director, Cloud Platforms BlueMetal Architects [email protected] Blog: igorshare.wordpress.com

Upload: igor-moochnick

Post on 24-Jun-2015

2.160 views

Category:

Technology


4 download

DESCRIPTION

Overview of the API to control Queues and Topics in Azure AppFabric ServiceBus

TRANSCRIPT

Page 1: Azure ServiceBus Queues and Topics

Igor MoochnickDirector, Cloud PlatformsBlueMetal [email protected] Blog: igorshare.wordpress.com

Page 2: Azure ServiceBus Queues and Topics
Page 3: Azure ServiceBus Queues and Topics
Page 4: Azure ServiceBus Queues and Topics
Page 5: Azure ServiceBus Queues and Topics
Page 6: Azure ServiceBus Queues and Topics

BrokerBroker

BrokerBroker

Page 7: Azure ServiceBus Queues and Topics

Feature Azure Queues Brokered Messaging

API REST, .NET .NET, REST, WCF

Authentication Storage Service HMAC Service Bus ACS

Maximum queue size 100TB 5GB

Maximum message size 64KB 256KB

Maximum message TTL 7 days 10,675,199 days

At most once delivery No Yes

At least once delivery Yes Yes

Maximum message lock 7 days 5 minutes

Hosted service affinity Yes No

Receive behavior Non-blocking Long polling (<24 days)

Throughput 5,000 msgs/second 800-3,000 msgs/sec

See: http://bit.ly/tY96CZ

Page 8: Azure ServiceBus Queues and Topics
Page 9: Azure ServiceBus Queues and Topics

Broker MessageBroker Message

BodyBody

PropertiesProperties

Page 10: Azure ServiceBus Queues and Topics
Page 11: Azure ServiceBus Queues and Topics

1

2

3

Page 12: Azure ServiceBus Queues and Topics

Management operations on the namespace Create/Delete/Exists for Queues, Topics, and Subscriptions

1

2

3

4

Page 13: Azure ServiceBus Queues and Topics

Creates client objects to interact with Queues, Topics, and Subscriptions. Anchor for connection management and multiplexing.

1

2

3

4

Page 14: Azure ServiceBus Queues and Topics

1

2

3

Page 15: Azure ServiceBus Queues and Topics

var queueClient = factory.CreateQueueClient(queueName);queueClient.Send(message);

queueClient.BeginSend(message, DoneSending, queueClient);

void DoneSending(IAsyncResult ar){ var queueClient = (QueueClient)ar.AsyncState; queueClient.EndSend(ar);

}

var sender = factory.CreateMessageSender(queueName);sender.Send(message);

1

2

3

Sending messages is done with Send or Begin/EndSend. You can send on the QueueClient or TopicClient or the neutral MessageSender.

Page 16: Azure ServiceBus Queues and Topics

var queueClient = factory.CreateQueueClient(queueName, ReceiveMode.ReceiveAndDelete);

var message = queueClient.Receive(TimeSpan.FromMinutes(1));if ( message != null ) { …

queueClient.BeginReceive(TimeSpan.FromMinutes(1), DoneReceiving, queueClient);

void DoneReceiving(IAsyncResult ar){ var queueClient = (QueueClient)ar.AsyncState; var message = queueClient.EndReceive(ar); if ( message != null ) { …

1

2

Destructive receives remove the messages from the queue as it is being taken from the broker. Higher throughput than Peek/Lock, but risk of message loss.

Page 17: Azure ServiceBus Queues and Topics

var queueClient = factory.CreateQueueClient(queueName, ReceiveMode.PeekLock);

var message = queueClient.Receive(TimeSpan.FromMinutes(1));if ( message != null ) { try { .. processing work .. message.Complete(); } catch { message.Abandon(); throw; }

1

Page 18: Azure ServiceBus Queues and Topics

Management operations on the namespace Create/Delete/Exists for Queues, Topics, and Subscriptions

1

2

3

Page 19: Azure ServiceBus Queues and Topics

var subClient = factory.CreateSubscriptionClient(topicName, subName, ReceiveMode.ReceiveAndDelete);

var message = subClient.Receive(TimeSpan.FromMinutes(1));if ( message != null ) { …

var rcv = factory.CreateMessageReceiver( SubscriptionClient.FormatSubscriptionPath(topicName, subName), ReceiveMode.ReceiveAndDelete);

var message = rcv.Receive(TimeSpan.FromMinutes(1));if ( message != null ) { …

1

2

Page 20: Azure ServiceBus Queues and Topics

Filter conditions operate on message properties Filter conditions operate on message properties and are expressed in SQL’92 syntax and are expressed in SQL’92 syntax

SET AuditRequired = 1

Filters actions may modify/add/remove properties as Filters actions may modify/add/remove properties as message is selectedmessage is selected

Page 21: Azure ServiceBus Queues and Topics
Page 22: Azure ServiceBus Queues and Topics
Page 23: Azure ServiceBus Queues and Topics
Page 24: Azure ServiceBus Queues and Topics
Page 25: Azure ServiceBus Queues and Topics

var policy = new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(MaxRetries, TimeSpan.FromMilliseconds(DelayMs));

policy.ExecuteAction(() => object.DoSomething());

Page 26: Azure ServiceBus Queues and Topics