SlideShare a Scribd company logo
1 of 30
Brokered Messaging
 in Windows Azure


    NEIL MACKENZIE
    SATORY GLOBAL
Who Am I?

 Neil Mackenzie
 Windows Azure MVP
 Book:
  Microsoft Windows Azure Development Cookbook
 Blog: http://convective.wordpress.com/
 Twitter: @mknz
Content

 Messaging overview
 Concepts
 Service Bus (digression)
 Brokered Messaging API
 Demo
Messaging

 Facilitates service-oriented architecture


 Windows Azure Platform supports:
   Direct
        Push - WCF
    Relayed
        Push – Service Bus Relayed Messaging
    Brokered
        Pull – Service Bus Brokered Messaging
Brokered Messaging

 Windows Azure Service Bus Brokered Messaging
   Provides persistent store for messages

   Exposes
      Send endpoint
      Listen endpoint

    Supports:
      Structured message content
      Serializable message body
      Sophisticated message receipt semantics
      Message sessions
      Correlated messages
Scenarios

 Temporal decoupling
   Senders and receivers don’t need to be active simultaneously

 Load leveling
   Receiver processes messages at its own pace

 Load balancing
   Scale up number of receivers to handle load

 Pub/Sub - Multicasting
   Multiple subscriptions
Message Store

 Managed by Brokered Messaging
 Exposed through a service path on the Service Bus
 Access controlled through Service Bus ACS
 Maximum size of queue/topic 1, 2, 3, 4, 5 GB
 Maximum message size: 256KB
 Message comprises:
   Header (name/value pairs) < 64KB

   Body (serializable)
At-Most Once or At-Least Once

 Brokered Messaging supports:
   At-most once semantics
        ReceiveMode.ReceiveAndDelete
    At-least once semantics
        ReceiveMode.PeekLock (default)
 Message disposition with PeekLock:
   Abandon

   Complete

   DeadLetter

   Defer
Queues



 S         Queue
                     R
 S
                     R
 S


Multiple            Competing
Senders             Receivers
Topics & Subscriptions

                  Topic
                                     R
                Subscriptions
   S                                     R
                                                 R
   S
                                                     R

   S
                                             R
                                             R
Multiple
Senders        Rules                 Independently
               (filters & actions)   Competing
                                     Receivers
Rules, Filters and Actions

 Rule comprises a Filter and an Action
   Filter uses Properties bag of a subscription to filter messages
    in the subscription
   Action uses SQL92 syntax to modify the Properties bag of a
    subscription
 Filters:
   CorrelationFilter         - uses CorrelationId
   FalseFilter               - no messages
   SqlFilter                 - SQL 92 syntax
   TrueFilter                - all messages (default)
Aside: Service Bus Namespaces

 Format:
   [namespace].servicebus.windows.net/[ServicePath]



 Examples:
   gress.servicebus.windows.net/services/echo


     gress.servicebus.windows.net/interestingtopic

     gress.servicebus.windows.net/news/subscriptions/subscriber
       Namespace: gress
       Topic name: news
       Subscription name: subscriber
Aside: Service Identity

 “Owner” – admin account for entire namespace
 Following claims used for each service path:
   manage

   send

   listen

 Create specific service identity for service path
 Use minimal set of claims
   e.g. only “send” claim needed for a send-only application

 SBAzTool
   SDK sample – application to manage service identities
Token Providers

 TokenProvider exposes factory methods creating
 various authentication token providers:
    Saml token
    Shared secret token
    Simple web token

 Uri serviceUri =
   ServiceBusEnvironment.CreateServiceUri(
   "sb", serviceNamespace, String.Empty);
 TokenProvider tokenProvider =
   TokenProvider.CreateSharedSecretTokenProvider(
     issuer, issuerKey);
Managing Queues, Topics and Subscriptions

 NamespaceManager exposes factory methods to
 create and delete:
    queues
    topics
    subscriptions

 NamespaceManager namespaceManager =
   new NamespaceManager( serviceUri, tokenProvider);
 namespaceManager.CreateQueue("queueName");
Queue, Topic and Subscription Metadata

 QueueDescription, TopicDescription and
  SubscriptionDescription used to configure
  queues, topics and subscriptions.
 Properties (e.g.):
    DefaultMessageTimeToLive   (qts)
    LockDuration               (qs)    (Max 300s, def 60s)
    MessageCount               (qs)
    Name                       (s)
    Path                       (qt)
    RequiresSession            (qs)
Client Classes

 MessagingFactory exposes factory methods to
 create the MessagingClientEntity derived objects
 used to send and receive brokered messages:
    MessageReceiver
    MessageSession
    MessageSender
    QueueClient
    SubscriptionClient
    TopicClient
 MessagingFactory messagingFactory =
   MessagingFactory.Create(
     serviceUri, tokenProvider);
Class: Brokered Message

 BrokeredMessage
   Represents the brokered message to be sent to a queue or
    topic, or retrieved from a queue or subscription.
   Comprises a header with various properties and a body created
    from a serializable class.
 Properties
   Properties bag can be used, instead of the message body, to
    store the content of a brokered message
   Very powerful technique enabling rules, filters and actions
Class: QueueClient

 QueueClient
   Handles sending and receiving brokered messages for a queue.

   Implements standard message disposition methods
    (Abandon, Complete, DeadLetter and Defer) when using
    ReceiveMode.PeekLock
   Supports synchronous and asynchronous versions of all
    methods


 No support for rules, filters and actions
Class: TopicClient

 TopicClient
   sends brokered messages to a topic.

   Supports synchronous and asynchronous versions of all
    methods


  TopicClient sender =
    messagingFactory.CreateTopicClient("topicName");
  BrokeredMessage brokeredMessage =
    new BrokeredMessage(serializableObject);
  sender.Send(brokeredMessage);
Class: SubscriptionClient

 SubscriptionClient
   receives brokered messages from a subscription

   implements standard message disposition methods
    (Abandon, Complete, DeadLetter and Defer) when using
    ReceiveMode.PeekLock
   supports synchronous and asynchronous versions of all
    methods
Classes: MessageReceiver & MessageSender

 MessageSender
   Abstracts functionality of QueueClient and TopicClient so that
    it can send messages to either queues or topics.
 MessageReceiver
   Abstracts functionality of QueueClient and SubscriptionClient
    so that it can receive messages from either queues or
    subscriptions.
   Easiest way to access the deadletter queue.
Class: MessageSession

 MessageSession
   provides specialized MessageReceiver used to handle sessions

   receives messages only for a particular session

 Sessions are supported only if queue or subscription
  created with RequiresSession property
 Session is a sequence of brokered messages with the
  same SessionId
Deadletter Subqueue

 Subqueue containing “failed” messages
 Messages are added to deadletter subqueue
   When explicitly deadlettered

   On message expiration (if configured)

   On filter evaluation failure (if configured)

 Deadletter queue processed like any other queue
 Named by extending service path, e.g.:
   /queue/$deadLetterQueue

   /topic/Subscriptions/subscription/$deadLetterQueue
WCF Interface

 WCF implementation of brokered messaging uses:
   NetMessagingBinding

 Binding:
   Folds brokered message into a WCF message

   Handles message polling for receiver

 See: Rick Hollander post on MSDN
   http://bit.ly/s2Zagg
REST Interface

 REST interface supports:
   Send

   Receive

   Filters

   More senders and receivers than .NET API

 REST interface does not support:
   Sessions

   Client batching
Comparison With Azure Storage Queues

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
Performance

 Throughput:
   800-3000 1KB messages / second through connection

   Scales down by number of subscriptions

 Control performance through:
   Client-side batching (default: on - factory)
         send/complete
     Database access (default: on - client entity)
         Server caching
     Prefetching (default: off – client entity)
 Use multiple queues and topics if necessary
Best Practices

 Use:
   Non-blocking asynchronous senders & receivers
         Asynchronous programming model (BeginX/EndX)
     Transient Fault Handling Framework
     Single message factory (connection)
     Single client entity (thread safe)
     Client-side batching
 Do not use:
   Default version of Task Parallel Library

 See http://bit.ly/t5jUdm
References

 Alan Smith: Developers Guide to AppFabric
   http://bit.ly/uB0aHS

 Rick Garibay: Code magazine article
   http://bit.ly/sRm9iK

 Clemens Vasters: Build 2011
   http://bit.ly/t5ip6k

 Neil Mackenzie: blog post
   http://bit.ly/oZdewm

 MSDN documentation
   http://bit.ly/v9dcPD

More Related Content

What's hot

RabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client libraryRabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client libraryMohammed Shaban
 
Kafka and ibm event streams basics
Kafka and ibm event streams basicsKafka and ibm event streams basics
Kafka and ibm event streams basicsBrian S. Paskin
 
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...Impetus Technologies
 
Spring JMS and ActiveMQ
Spring JMS and ActiveMQSpring JMS and ActiveMQ
Spring JMS and ActiveMQGeert Pante
 
Distributed System by Pratik Tambekar
Distributed System by Pratik TambekarDistributed System by Pratik Tambekar
Distributed System by Pratik TambekarPratik Tambekar
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQZoran Majstorovic
 
Kafka Technical Overview
Kafka Technical OverviewKafka Technical Overview
Kafka Technical OverviewSylvester John
 
Journey through Cloud front AWS
Journey through Cloud front AWSJourney through Cloud front AWS
Journey through Cloud front AWSMd. Khairul Anam
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationEmre Gündoğdu
 
10135 a 06
10135 a 0610135 a 06
10135 a 06Bố Su
 
WebSphere MQ V7 API Enhancements
WebSphere MQ V7 API EnhancementsWebSphere MQ V7 API Enhancements
WebSphere MQ V7 API EnhancementsMorag Hughson
 
Distributed System by Pratik Tambekar
Distributed System by Pratik TambekarDistributed System by Pratik Tambekar
Distributed System by Pratik TambekarPratik Tambekar
 
Java Messaging Services
Java Messaging ServicesJava Messaging Services
Java Messaging Serviceskumar gaurav
 

What's hot (20)

Thrift
ThriftThrift
Thrift
 
RabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client libraryRabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client library
 
Kafka and ibm event streams basics
Kafka and ibm event streams basicsKafka and ibm event streams basics
Kafka and ibm event streams basics
 
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...
Multiplexing in Thrift: Enhancing thrift to meet Enterprise expectations- Imp...
 
Spring JMS and ActiveMQ
Spring JMS and ActiveMQSpring JMS and ActiveMQ
Spring JMS and ActiveMQ
 
Distributed System by Pratik Tambekar
Distributed System by Pratik TambekarDistributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQ
 
Jms
JmsJms
Jms
 
Jms
JmsJms
Jms
 
Kafka Technical Overview
Kafka Technical OverviewKafka Technical Overview
Kafka Technical Overview
 
Apache Kafka Demo
Apache Kafka DemoApache Kafka Demo
Apache Kafka Demo
 
Journey through Cloud front AWS
Journey through Cloud front AWSJourney through Cloud front AWS
Journey through Cloud front AWS
 
Messaging in Java
Messaging in JavaMessaging in Java
Messaging in Java
 
test
testtest
test
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka Presentation
 
10135 a 06
10135 a 0610135 a 06
10135 a 06
 
WebSphere MQ V7 API Enhancements
WebSphere MQ V7 API EnhancementsWebSphere MQ V7 API Enhancements
WebSphere MQ V7 API Enhancements
 
Distributed System by Pratik Tambekar
Distributed System by Pratik TambekarDistributed System by Pratik Tambekar
Distributed System by Pratik Tambekar
 
Java Messaging Services
Java Messaging ServicesJava Messaging Services
Java Messaging Services
 
JMS
JMSJMS
JMS
 

Viewers also liked

AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016
AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016
AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016Amazon Web Services Korea
 
Sala 2 05 tratamento de notificações - rafael prenzier
Sala 2 05   tratamento de notificações - rafael prenzierSala 2 05   tratamento de notificações - rafael prenzier
Sala 2 05 tratamento de notificações - rafael prenzierfsolari
 
MercadoPago
MercadoPagoMercadoPago
MercadoPagofsolari
 
Audit¢rio 07 soluá‰es de pagamento mobile - victor vasconcellos
Audit¢rio 07   soluá‰es de pagamento mobile - victor vasconcellosAudit¢rio 07   soluá‰es de pagamento mobile - victor vasconcellos
Audit¢rio 07 soluá‰es de pagamento mobile - victor vasconcellosfsolari
 
Experiencias de integração
Experiencias de integraçãoExperiencias de integração
Experiencias de integraçãofsolari
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santosfsolari
 
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...fsolari
 
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06   desenvolvimento de integração ao vivo -gabriel e carlosSala 2 06   desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlosfsolari
 
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09   mercado envios - novas funcionalidades - bruno eliaAudit¢rio 09   mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09 mercado envios - novas funcionalidades - bruno eliafsolari
 
DevConf AR2014
DevConf AR2014DevConf AR2014
DevConf AR2014fsolari
 
Vendedores 01 abertura - helisson lemos
Vendedores 01   abertura - helisson lemosVendedores 01   abertura - helisson lemos
Vendedores 01 abertura - helisson lemosfsolari
 
Introdução das API's - MeliDevConf 2013 - SP
Introdução das API's - MeliDevConf 2013 - SPIntrodução das API's - MeliDevConf 2013 - SP
Introdução das API's - MeliDevConf 2013 - SPmelidevelopers
 
Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.melidevelopers
 
Vendedores 02 como escalar meu negócio usando as ap is - rafael prenzier
Vendedores 02   como escalar meu negócio usando as ap is - rafael prenzierVendedores 02   como escalar meu negócio usando as ap is - rafael prenzier
Vendedores 02 como escalar meu negócio usando as ap is - rafael prenzierfsolari
 
Federico Procaccini DevConf 2014
Federico Procaccini DevConf 2014Federico Procaccini DevConf 2014
Federico Procaccini DevConf 2014fsolari
 
Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.melidevelopers
 
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SPArquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SPmelidevelopers
 
API's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPAPI's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPmelidevelopers
 
Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.melidevelopers
 
API Interaction
API InteractionAPI Interaction
API Interactionfsolari
 

Viewers also liked (20)

AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016
AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016
AWS 기반 문서중앙화 솔루션 구축 방안::이덕재::AWS Summit Seoul 2016
 
Sala 2 05 tratamento de notificações - rafael prenzier
Sala 2 05   tratamento de notificações - rafael prenzierSala 2 05   tratamento de notificações - rafael prenzier
Sala 2 05 tratamento de notificações - rafael prenzier
 
MercadoPago
MercadoPagoMercadoPago
MercadoPago
 
Audit¢rio 07 soluá‰es de pagamento mobile - victor vasconcellos
Audit¢rio 07   soluá‰es de pagamento mobile - victor vasconcellosAudit¢rio 07   soluá‰es de pagamento mobile - victor vasconcellos
Audit¢rio 07 soluá‰es de pagamento mobile - victor vasconcellos
 
Experiencias de integração
Experiencias de integraçãoExperiencias de integração
Experiencias de integração
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santos
 
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
 
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06   desenvolvimento de integração ao vivo -gabriel e carlosSala 2 06   desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
 
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09   mercado envios - novas funcionalidades - bruno eliaAudit¢rio 09   mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
 
DevConf AR2014
DevConf AR2014DevConf AR2014
DevConf AR2014
 
Vendedores 01 abertura - helisson lemos
Vendedores 01   abertura - helisson lemosVendedores 01   abertura - helisson lemos
Vendedores 01 abertura - helisson lemos
 
Introdução das API's - MeliDevConf 2013 - SP
Introdução das API's - MeliDevConf 2013 - SPIntrodução das API's - MeliDevConf 2013 - SP
Introdução das API's - MeliDevConf 2013 - SP
 
Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.
 
Vendedores 02 como escalar meu negócio usando as ap is - rafael prenzier
Vendedores 02   como escalar meu negócio usando as ap is - rafael prenzierVendedores 02   como escalar meu negócio usando as ap is - rafael prenzier
Vendedores 02 como escalar meu negócio usando as ap is - rafael prenzier
 
Federico Procaccini DevConf 2014
Federico Procaccini DevConf 2014Federico Procaccini DevConf 2014
Federico Procaccini DevConf 2014
 
Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.
 
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SPArquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP
 
API's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPAPI's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SP
 
Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.
 
API Interaction
API InteractionAPI Interaction
API Interaction
 

Similar to Brokered Messaging in Windows Azure

Micro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingMicro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingApcera
 
Integration on windows azure
Integration on windows azureIntegration on windows azure
Integration on windows azureSam Vanhoutte
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...VMware Tanzu
 
Application Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for MicroservicesApplication Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for MicroservicesDennis Traub
 
Messaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service BusMessaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service BusSean Feldman
 
[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging Queues[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging QueuesNaukri.com
 
Session 1: The SOAP Story
Session 1: The SOAP StorySession 1: The SOAP Story
Session 1: The SOAP Storyukdpe
 
Implementing Domain Events with Kafka
Implementing Domain Events with KafkaImplementing Domain Events with Kafka
Implementing Domain Events with KafkaAndrei Rugina
 
Wcf difference faqs- 3
Wcf difference faqs- 3Wcf difference faqs- 3
Wcf difference faqs- 3Umar Ali
 
AWS Serverless Introduction
AWS Serverless IntroductionAWS Serverless Introduction
AWS Serverless Introductionarconsis
 
1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ振东 刘
 
Azure Bootcamp Louisville - Service bus
Azure Bootcamp Louisville - Service busAzure Bootcamp Louisville - Service bus
Azure Bootcamp Louisville - Service busAndrea Walker
 
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMESet your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMEconfluent
 
Princeton Dec 2022 Meetup_ StreamNative and Cloudera Streaming
Princeton Dec 2022 Meetup_ StreamNative and Cloudera StreamingPrinceton Dec 2022 Meetup_ StreamNative and Cloudera Streaming
Princeton Dec 2022 Meetup_ StreamNative and Cloudera StreamingTimothy Spann
 

Similar to Brokered Messaging in Windows Azure (20)

Micro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingMicro on NATS - Microservices with Messaging
Micro on NATS - Microservices with Messaging
 
Intro to Azure Service Bus
Intro to Azure Service BusIntro to Azure Service Bus
Intro to Azure Service Bus
 
Integration on windows azure
Integration on windows azureIntegration on windows azure
Integration on windows azure
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
 
Application Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for MicroservicesApplication Integration Patterns (not only) for Microservices
Application Integration Patterns (not only) for Microservices
 
Messaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service BusMessaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service Bus
 
[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging Queues[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging Queues
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
Session 1: The SOAP Story
Session 1: The SOAP StorySession 1: The SOAP Story
Session 1: The SOAP Story
 
Azure Messaging Services 2
Azure Messaging Services 2Azure Messaging Services 2
Azure Messaging Services 2
 
Implementing Domain Events with Kafka
Implementing Domain Events with KafkaImplementing Domain Events with Kafka
Implementing Domain Events with Kafka
 
Wcf difference faqs- 3
Wcf difference faqs- 3Wcf difference faqs- 3
Wcf difference faqs- 3
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
AWS Serverless Introduction
AWS Serverless IntroductionAWS Serverless Introduction
AWS Serverless Introduction
 
AWS Serverless Introduction
AWS Serverless IntroductionAWS Serverless Introduction
AWS Serverless Introduction
 
Introduction to apache kafka
Introduction to apache kafkaIntroduction to apache kafka
Introduction to apache kafka
 
1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ
 
Azure Bootcamp Louisville - Service bus
Azure Bootcamp Louisville - Service busAzure Bootcamp Louisville - Service bus
Azure Bootcamp Louisville - Service bus
 
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LMESet your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
 
Princeton Dec 2022 Meetup_ StreamNative and Cloudera Streaming
Princeton Dec 2022 Meetup_ StreamNative and Cloudera StreamingPrinceton Dec 2022 Meetup_ StreamNative and Cloudera Streaming
Princeton Dec 2022 Meetup_ StreamNative and Cloudera Streaming
 

More from Neil Mackenzie

Project Orleans - Actor Model framework
Project Orleans - Actor Model frameworkProject Orleans - Actor Model framework
Project Orleans - Actor Model frameworkNeil Mackenzie
 
Windows Azure Virtual Machines
Windows Azure Virtual MachinesWindows Azure Virtual Machines
Windows Azure Virtual MachinesNeil Mackenzie
 
Node.js on Windows Azure
Node.js on Windows AzureNode.js on Windows Azure
Node.js on Windows AzureNeil Mackenzie
 
Windows Azure HDInsight Service
Windows Azure HDInsight ServiceWindows Azure HDInsight Service
Windows Azure HDInsight ServiceNeil Mackenzie
 
Windows Azure SQL Database Federations
Windows Azure SQL Database FederationsWindows Azure SQL Database Federations
Windows Azure SQL Database FederationsNeil Mackenzie
 
Windows Azure Diagnostics
Windows Azure DiagnosticsWindows Azure Diagnostics
Windows Azure DiagnosticsNeil Mackenzie
 
Introduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsIntroduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsNeil Mackenzie
 

More from Neil Mackenzie (8)

Azure DocumentDB
Azure DocumentDBAzure DocumentDB
Azure DocumentDB
 
Project Orleans - Actor Model framework
Project Orleans - Actor Model frameworkProject Orleans - Actor Model framework
Project Orleans - Actor Model framework
 
Windows Azure Virtual Machines
Windows Azure Virtual MachinesWindows Azure Virtual Machines
Windows Azure Virtual Machines
 
Node.js on Windows Azure
Node.js on Windows AzureNode.js on Windows Azure
Node.js on Windows Azure
 
Windows Azure HDInsight Service
Windows Azure HDInsight ServiceWindows Azure HDInsight Service
Windows Azure HDInsight Service
 
Windows Azure SQL Database Federations
Windows Azure SQL Database FederationsWindows Azure SQL Database Federations
Windows Azure SQL Database Federations
 
Windows Azure Diagnostics
Windows Azure DiagnosticsWindows Azure Diagnostics
Windows Azure Diagnostics
 
Introduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsIntroduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric Applications
 

Recently uploaded

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Recently uploaded (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

Brokered Messaging in Windows Azure

  • 1. Brokered Messaging in Windows Azure NEIL MACKENZIE SATORY GLOBAL
  • 2. Who Am I?  Neil Mackenzie  Windows Azure MVP  Book: Microsoft Windows Azure Development Cookbook  Blog: http://convective.wordpress.com/  Twitter: @mknz
  • 3. Content  Messaging overview  Concepts  Service Bus (digression)  Brokered Messaging API  Demo
  • 4. Messaging  Facilitates service-oriented architecture  Windows Azure Platform supports:  Direct  Push - WCF  Relayed  Push – Service Bus Relayed Messaging  Brokered  Pull – Service Bus Brokered Messaging
  • 5. Brokered Messaging  Windows Azure Service Bus Brokered Messaging  Provides persistent store for messages  Exposes  Send endpoint  Listen endpoint  Supports:  Structured message content  Serializable message body  Sophisticated message receipt semantics  Message sessions  Correlated messages
  • 6. Scenarios  Temporal decoupling  Senders and receivers don’t need to be active simultaneously  Load leveling  Receiver processes messages at its own pace  Load balancing  Scale up number of receivers to handle load  Pub/Sub - Multicasting  Multiple subscriptions
  • 7. Message Store  Managed by Brokered Messaging  Exposed through a service path on the Service Bus  Access controlled through Service Bus ACS  Maximum size of queue/topic 1, 2, 3, 4, 5 GB  Maximum message size: 256KB  Message comprises:  Header (name/value pairs) < 64KB  Body (serializable)
  • 8. At-Most Once or At-Least Once  Brokered Messaging supports:  At-most once semantics  ReceiveMode.ReceiveAndDelete  At-least once semantics  ReceiveMode.PeekLock (default)  Message disposition with PeekLock:  Abandon  Complete  DeadLetter  Defer
  • 9. Queues S Queue R S R S Multiple Competing Senders Receivers
  • 10. Topics & Subscriptions Topic R Subscriptions S R R S R S R R Multiple Senders Rules Independently (filters & actions) Competing Receivers
  • 11. Rules, Filters and Actions  Rule comprises a Filter and an Action  Filter uses Properties bag of a subscription to filter messages in the subscription  Action uses SQL92 syntax to modify the Properties bag of a subscription  Filters:  CorrelationFilter - uses CorrelationId  FalseFilter - no messages  SqlFilter - SQL 92 syntax  TrueFilter - all messages (default)
  • 12. Aside: Service Bus Namespaces  Format:  [namespace].servicebus.windows.net/[ServicePath]  Examples:  gress.servicebus.windows.net/services/echo  gress.servicebus.windows.net/interestingtopic  gress.servicebus.windows.net/news/subscriptions/subscriber  Namespace: gress  Topic name: news  Subscription name: subscriber
  • 13. Aside: Service Identity  “Owner” – admin account for entire namespace  Following claims used for each service path:  manage  send  listen  Create specific service identity for service path  Use minimal set of claims  e.g. only “send” claim needed for a send-only application  SBAzTool  SDK sample – application to manage service identities
  • 14. Token Providers  TokenProvider exposes factory methods creating various authentication token providers:  Saml token  Shared secret token  Simple web token Uri serviceUri = ServiceBusEnvironment.CreateServiceUri( "sb", serviceNamespace, String.Empty); TokenProvider tokenProvider = TokenProvider.CreateSharedSecretTokenProvider( issuer, issuerKey);
  • 15. Managing Queues, Topics and Subscriptions  NamespaceManager exposes factory methods to create and delete:  queues  topics  subscriptions NamespaceManager namespaceManager = new NamespaceManager( serviceUri, tokenProvider); namespaceManager.CreateQueue("queueName");
  • 16. Queue, Topic and Subscription Metadata  QueueDescription, TopicDescription and SubscriptionDescription used to configure queues, topics and subscriptions.  Properties (e.g.):  DefaultMessageTimeToLive (qts)  LockDuration (qs) (Max 300s, def 60s)  MessageCount (qs)  Name (s)  Path (qt)  RequiresSession (qs)
  • 17. Client Classes  MessagingFactory exposes factory methods to create the MessagingClientEntity derived objects used to send and receive brokered messages:  MessageReceiver  MessageSession  MessageSender  QueueClient  SubscriptionClient  TopicClient MessagingFactory messagingFactory = MessagingFactory.Create( serviceUri, tokenProvider);
  • 18. Class: Brokered Message  BrokeredMessage  Represents the brokered message to be sent to a queue or topic, or retrieved from a queue or subscription.  Comprises a header with various properties and a body created from a serializable class.  Properties  Properties bag can be used, instead of the message body, to store the content of a brokered message  Very powerful technique enabling rules, filters and actions
  • 19. Class: QueueClient  QueueClient  Handles sending and receiving brokered messages for a queue.  Implements standard message disposition methods (Abandon, Complete, DeadLetter and Defer) when using ReceiveMode.PeekLock  Supports synchronous and asynchronous versions of all methods  No support for rules, filters and actions
  • 20. Class: TopicClient  TopicClient  sends brokered messages to a topic.  Supports synchronous and asynchronous versions of all methods TopicClient sender = messagingFactory.CreateTopicClient("topicName"); BrokeredMessage brokeredMessage = new BrokeredMessage(serializableObject); sender.Send(brokeredMessage);
  • 21. Class: SubscriptionClient  SubscriptionClient  receives brokered messages from a subscription  implements standard message disposition methods (Abandon, Complete, DeadLetter and Defer) when using ReceiveMode.PeekLock  supports synchronous and asynchronous versions of all methods
  • 22. Classes: MessageReceiver & MessageSender  MessageSender  Abstracts functionality of QueueClient and TopicClient so that it can send messages to either queues or topics.  MessageReceiver  Abstracts functionality of QueueClient and SubscriptionClient so that it can receive messages from either queues or subscriptions.  Easiest way to access the deadletter queue.
  • 23. Class: MessageSession  MessageSession  provides specialized MessageReceiver used to handle sessions  receives messages only for a particular session  Sessions are supported only if queue or subscription created with RequiresSession property  Session is a sequence of brokered messages with the same SessionId
  • 24. Deadletter Subqueue  Subqueue containing “failed” messages  Messages are added to deadletter subqueue  When explicitly deadlettered  On message expiration (if configured)  On filter evaluation failure (if configured)  Deadletter queue processed like any other queue  Named by extending service path, e.g.:  /queue/$deadLetterQueue  /topic/Subscriptions/subscription/$deadLetterQueue
  • 25. WCF Interface  WCF implementation of brokered messaging uses:  NetMessagingBinding  Binding:  Folds brokered message into a WCF message  Handles message polling for receiver  See: Rick Hollander post on MSDN  http://bit.ly/s2Zagg
  • 26. REST Interface  REST interface supports:  Send  Receive  Filters  More senders and receivers than .NET API  REST interface does not support:  Sessions  Client batching
  • 27. Comparison With Azure Storage Queues 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
  • 28. Performance  Throughput:  800-3000 1KB messages / second through connection  Scales down by number of subscriptions  Control performance through:  Client-side batching (default: on - factory)  send/complete  Database access (default: on - client entity)  Server caching  Prefetching (default: off – client entity)  Use multiple queues and topics if necessary
  • 29. Best Practices  Use:  Non-blocking asynchronous senders & receivers  Asynchronous programming model (BeginX/EndX)  Transient Fault Handling Framework  Single message factory (connection)  Single client entity (thread safe)  Client-side batching  Do not use:  Default version of Task Parallel Library  See http://bit.ly/t5jUdm
  • 30. References  Alan Smith: Developers Guide to AppFabric  http://bit.ly/uB0aHS  Rick Garibay: Code magazine article  http://bit.ly/sRm9iK  Clemens Vasters: Build 2011  http://bit.ly/t5ip6k  Neil Mackenzie: blog post  http://bit.ly/oZdewm  MSDN documentation  http://bit.ly/v9dcPD

Editor's Notes

  1. Pull messaging
  2. Load leveling &amp; load balancing
  3. At most once &amp; at least once semantics.
  4. http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.tokenprovider.aspx
  5. http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.namespacemanager.aspx
  6. http://msdn.microsoft.com/en-us/library/windowsazure/hh367521.aspx
  7. http://preps2.wordpress.com/2011/09/17/comparison-of-windows-azure-storage-queues-and-service-bus-queues/
  8. http://windowsazurecat.com/2011/09/best-practices-leveraging-windows-azure-service-bus-brokered-messaging-api/
  9. CAT:http://msdn.microsoft.com/en-us/library/windowsazure/hh528527.aspxhttp://msdn.microsoft.com/en-us/library/windowsazure/hh528527.aspx
  10. @alansmith@rickggaribay@clemensv@mknz