Shiv Kumar
Async-Await in C# 5 Part1
updated
Movie Service Repo
github.com/matlus/MovieServiceYouTube
The Art of Unit Testing • Roy Osherove & Dave Farley • GOTO 2021
youtube.com/watch?v=6ndAWzc2F-I
00:00 Intro
01:19 Experience Multiple Techniques
02:36 Compare the Best Practice of Each
05:18 The Case for Writing Automated Tests
08:32 What is a Unit
13:24 Purpose of Unit Testing
14:00 Transitioning from Testing Classes to Systems
16:46 Confidence To Deploy
18:16 The Value of Regression Tests
21:22 No Drift
23:01 The Problem With Mocking
23:56 TDD is Dead. Long Live Testing
29:09 I don't Subscribe to TDD
31:27 The Testing Strategy
Link to the Source Code used in this video:
github.com/matlus/MovieServiceYouTube
Chapter Markers:
00:00 Intro
02:30 The Genesis
07:24 The Need to Decouple
08:37 Moving to a Web Application
10:06 Evolution to a Thin Client
12:58 What is a Service Interface Layer?
17:44 Examples of Service Interface Layers
18:18 Use your System Anywhere
21:24 Real World Cases
22:57 IoT Application Benefit from this Decoupling
24:45 A Lot has Evolved But the Service Interface Layer Remains
26:00 Introducing the Code
30:07 Using a Console App as a Service Interface Layer
33:23 No Bootstrapping Required
35:37 Running the Console Application
36:11 How Simple was That!
37:40 Conclusion
My VS Editor Fonts and Colors: gist.github.com/matlus/40683dbd7b993e57c4a385821b53aa9f
Source Code for the Completed VS Solution can be found here:
github.com/matlus/IDisposableExposed
Chapter Markers
00:00 Intro
01:45 What is Managed Code
03:16 Managed Services
04:41 Unmanaged Services
10:02 Introducing the Code for this video
15:06 Cascade Disposables
15:54 The Dispose Pattern
20:02 Why GC.SupressFinalize
21:51 Reason for Why we have IDisposable
27:31 ADO.NET - Connections, Transactions, Commands
30:30 DbConnection - Close vs Dispose
33:19 IDisposable & Close vs Dispose
34:33 Logger Provider also uses Disposable Things
43:26 Background Services and IDisposable/IAsyncDisposable
Source for the Visual Studio Solution discussed in this video:
github.com/matlus/PreferCompositionOverInheritance
Bookmarks
00:00 Intro
00:18 What are we learning Today?
01:15 The Real Issue with Inheritance
02:08 Reasons Not to Use Inheritance
02:58 My Opinion On Inheritance
03:32 The Example Code/Project
03:48 Not A Big Fan of Libraries/Reuse
04:28 The Genesis of this Video
05:06 The Rule Of Thirds
06:46 Problems with Libraries/NuGets
08:53 The Root of the Problem
14:03 What's the Solution?
19:07 The Solution Explained
20:42 Visual Studio Solution Walkthrough
22:41 The Specialized Classes
24:22 The Compositing ConfigurationProvider
24:51 Reuse through Composition
27:38 Composition vs Aggregation
Source Code for the Project Discussed in this video:
github.com/matlus/HighPerformanceLoggingAndInMemoryLogger
Chapter Markers
00:00 Intro
01:18 Disposables - When, Why, Who is responsible? - In the context of larger applications
02:50 The Need to Log to Remote Servers (Splunk / ApplicationInsights)
10:59 The Problem With Not Disposing the LoggerProvider
14:43 Fireside Chat Series - 10-15 minutes long
17:01 Customer Logger and Friends
20:22 Starting With the In-Memory Logger
30:38 Test To Ensure you are logging correctly and all relevant information is present
31:25 Introducing the ILoggerProvider Interface
33:43 Introducing the LoggingBuilder Extension Method
34:55 Introducing the LoggingInMemoryFactoryExtension
Would you be interested in this short form content?
Source Code for the Project Discussed in this video:
github.com/matlus/HighPerformanceLoggingAndInMemoryLogger
Chapters
00:00 Intro
00:26 What's covered in this Video
05:23 What is the Purpose of an Adaptor
07:44 A Look at the Code
12:20 The Bug related to High-Speed Logging
13:17 The Solution to Logging DTOs of your choosing
20:22 Implementation of TState for a customer DTO
Source Code for the Project
github.com/matlus/ConsoleAppLogger-.NET-5
Chapter Markers
00:00 Intro
00:46 What is this Video About
03:45 Intro to the LoggerProvider
05:17 Introducing the Rest of the Code
05:39 What Is Application Insights
08:37 Run the App and Look at the Logs
17:06 Explanation of the Code
17:55 Issues with Structured Logging
18:32 Looking and Logged Exceptions
20:09 Problems with Logging
24:38 Problems with ILogger
29:56 Introducing the ApplicationLogger Class
1. Avoid LINQ
2. Avoid using foreach over collections that do not have a struct enumerator
3. Consider using an object pool. There are many usages of object pools in the compiler to see an example
Having a good understanding what LINQ is does internally should yield enough information to know whether you are taking a performance hit. LINQ, as a built-in technology, has performance advantages and disadvantages. The code behind the extension methods has had considerable performance attention paid to it by the .NET team.
The code shown in this video can be found here:
github.com/matlus/VariousBenchmarks
In this video, we talk about how to combine regular ASP.NET Core Web API endpoints with gRPC. How to design and implement your applications insofar as gRPC code generated classes and how to deal with and handle exceptions.
Introduction to gRPC
youtu.be/Vsw4saPiTPM
gRPC - Getting Started .NET 5/ .NET Core 3.x
youtu.be/nd8YecX21cc
The Source code of the project built during this video is available here:
github.com/matlus/MovieServiceGrpcYouTube
The Original (non-gRPC version) MovieService application that is more fleshed out and include tons of Tests can be found here:
github.com/matlus/MovieServiceYouTube
Chapter Markers
00:00 Intro
00:47 Introduction to the "System"
02:58 Roles and Responsibilities of the gRPC Stubs/Service Interface Layer
06:00 Role of the gRPC Code generated files
09:18 Introducing the MovieServiceGrpc class (gRPC Abstraction)
10:11 Adding gRPC to an ASP.NET Core application
11:05 The .proto Files
12:38 Implementation of the MovieServiceGrpc class
21:35 gRPC Client side Gateway
23:04 Implementation of the Client side Gateway
27:55 Implementing the Client (using the Gateway)
31:29 Implementing the gRPC Streaming method
31:48 Slowing down the Streaming
34:46 Handling RpcExceptions
40:44 Getting the Business Exception to be thrown
48:45 Conclusion
This video I show you how to get started with gRPC in .NET 5/ .NET Core 3.x using Unary and streaming calls. The source code for the project developed during this video can be found here:
github.com/matlus/gRPCGettingStarted.NET-5
Chapter Markers
00:00 Intro
01:23 gRPC Performance
06:42 Why such good Performance
09:34 Named Pipes Transport
11:25 Platform Support for gRPC
13:03 Starting with the Project
17:42 The Movie Service Proto
23:41 The Generated Code Files
27:53 Coding the Service (Unary call)
30:35 Starting with the gRPC Client
38:25 Running Client and Server (Unary call)
40:32 Defining the Streaming Method
41:42 Implementing Server Streaming
44:30 Implementing Client side Streaming
50:07 Implementing IAsynEnumerable
53:26 Correct Implementation of Server Streaming
58:30 Server side streaming Cancellation Token
The main benefits of gRPC are:
Modern, high-performance, lightweight RPC framework.
Contract-first API development, using Protocol Buffers by default, allowing for language agnostic implementations.
Tooling available for many languages to generate strongly-typed servers and clients.
Supports client, server, and bi-directional streaming calls.
Reduced network usage with Protobuf binary serialization.
Chapters
00:00 Intro
01:19 What is gRPC
02:40 Why is gRPC
03:54 Other RPC frameworks
06:06 Stubby the Genesis of gRPC
08:29 gRPC the CNCF Incubation Project
10:15 When to use gRPC
11:30 Who is using gRPC
12:14 Advantages of HTTP/2
14:09 Protocol Buffers
17:35 Proto Document - Define your Service
23:46 gRPC Performance
31:33 HTTP/2 Multiplexing
33:51 HTTP/2 Full Duplex
34:15 HTTP/2 Header Compression
35:33 QUIC
38:49 gRPC Architecture
Yet, most of us can't explain it, or can't recognize good from bad abstractions. In this video I attempt to explain how to design abstractions as well as how to recognize weak and strong abstractions and when to even attempt to abstract.
Encapsulation vs Abstraction
http://www.tonymarston.co.uk/php-mysql/abstraction.txt
Movie Service Sample Application
github.com/matlus/MovieServiceYouTube
One To Many Map Sample Code
github.com/matlus/OneToManyMapBenchmark
O, L, D are essentially Polymorphism. I’ve removed S and I and used it as “IS”. But SOLID is fact OLD, in that not only is this not new. But I think we need to move past SOLID, primarily because of the issues with SOLID. In this video, I tell you why I think that is, and the issues I have with SOLID. But there is also something VERY important that’s missing.
Sample Visual Studio APS.NET Core Web API solution
github.com/matlus/MovieServiceYouTube
Yet, most of us can't explain it, or can't recognize good from bad abstractions. In this video I attempt to explain how to design abstractions as well as how to recognize weak and strong abstractions and when to even attempt to abstract.
Adapter Design Pattern (Code referenced in this video)
github.com/matlus/Adapter-Design-Pattern-Message-Brokers
00:00 Intro
01:24 Don't Rush to Abstract
03:06 What is an Abstraction?
03:38 Too Much or Too Little Abstraction
04:45 Strong and Weak Abstractions
06:14 Purpose and Correct Level of an Abstraction
08:38 Too Little or Leaky Abstraction
09:15 The Right Level of Abstraction
09:51 An Example - Message Broker
12:31 Methods are Abstractions
13:23 Don't Rush to Abstract - Rule of Thirds
14:10 Don't use Bool arguments
15:50 Wait before you Lock Yourself into a Solution
17:06 Abstraction in Class Design
19:35 Code Example - Message Broker Abstraction
32:04 How to arrive at a Good Abstraction
33:03 Code Example - CosmosDb Abstraction
34:32 Graphs and Charts Abstraction
35:59 Clean Abstraction last longer
37:29 Code Example - CosmosDb Abstraction Continued
41:11 Abstractions work for you and not what they're hiding
42:22 Example of a Bad Abstraction
45:46 Too much Abstraction
45:57 Conclusion
In this video, I show you what we need to do prior to C# 9 in order to get similar functionality and then introduce C# 9 Record types, so that you can truly appreciate this new feature.
In this video I talk about some of my experiences and what I’ve learnt over the years and I give you pointers to how you could improve your communication and public speaking skills.
My Living With Intent Channel
youtube.com/channel/UCdJSBGsqI8dqDwuujBm47TQ
In this video, I make a case for why we should be using the cast expression in many cases where most folks will use the "as" operator, making our code more robust and less buggy.
Some of the code shown in this video comes from this project:
github.com/matlus/MovieServiceYouTube
00:00 Introduction
01:04 The GoF Book
02:00 DTO's are Instantiated but Not Inerited
05:00 Two kinds of Inheritance
05:24 Ineritance for the sake of Polymoprhism
07:05 When should DTOs Inherit?
09:25 When/Why create Instances
10:51 Why create Instances of Behaviour Only Classes?
12:45 Behaviour Only classes could be Static
14:13 Favor Composition over Inheritance
16:41 The Usual Suspects - DI, Mocking, Testing in Isolation
17:59 Why use Statics?
22:08 Programming with Intent
23:36 Shallow Hierarchies
24:16 Conclusion
The Entire solution for the code shown in this video can be found here:
github.com/matlus/MovieServiceYouTube
The Visual Studio Solution for the code in this video can be found here:
github.com/matlus/SignalRAndWorkerServicePart3
youtube.com/post/UgwoZjekuDUTdD1fkFB4AaABCQ
The Visual Studio Solution for the code in this video can be found here:
github.com/matlus/SignalRAndWorkerServicePart2
For Live Session (on Novenber 14th 2020 @ 9am EST) please see my community post:
youtube.com/post/UgwoZjekuDUTdD1fkFB4AaABCQ
00:00 Introduction
00:53 Plan for this session
02:46 Recap of the previous project
04:06 The problem - coupling code system with Worker Services and Hubs
05:10 System Design Best Practices
15:24 The Design of this system
17:25 Enhancing/Changing existing code
20:49 Enhancing the Worker Service to use the SignalProcessor Manager
22:26 Testing the Enhanced application
27:43 Creating the Publishing Application
32:20 Testing the SignalR front end with the Publisher
38:11 Extending the UI to send messages via SignalR to the Server
41:48 To use Dependency Injection or Not
42:45 Preparing for te Live Session
The Visual Studio Solution for the code in this video can be found here:
github.com/matlus/SignalRAndWorkerServices-GettingStarted
For Live Session (on Novenber 14th 2020 @ 9am EST) please see my community post:
youtube.com/post/UgwoZjekuDUTdD1fkFB4AaABCQ
00:00 Introduction
02:00 Diagram and Explanation of the Entire System
07:50 Starting with the Code
08:43 Modify Index Page
09:30 Adding SignalR and Configurating to Startup
11:23 Endpoint Mapping for SignalR Hub
12:44 Installing the SignalR NuGet Package
16:00 Installing the SignalR Client Side JavaScript libraries
17:45 Script tag in Index page for SignalR JavaScript file
19:17 Initial Test of SignalR plumbing
19:35 Description of what we're building today
20:47 Adding our JavaScript file
23:29 Testing Browser connectivity to the Server side Hub
23:48 Getting a Reference to the SignalR in our Application
24:52 Adding the Worker Service to the Project
27:12 Getting a Reference to the IHubContext in a Worker Service
28:00 Sending message to all SignalR Clients
33:35 Adding the JavaScript callback
35:00 Configuring the Worker Service in Startup
36:10 Testing Message are being received
36:41 Improving the Display of Messages
38:52 Testing the Modified Message Display
41:10 Serialization - MessagePack Serialization
43:54 Conclusion
The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers.
WebSocket providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011, and the WebSocket API in Web IDL is being standardized by the W3C.
Live Demo website: http://iot.matlus.com/polls/results
Chapter Markers
00:00 Introduction
01:32 Demo
03:17 Demo Explanation
08:06 Access the Live Demo Website
09:09 Starting with WebSockets
09:30 TCP - OSI Model/Stack
11:48 What is TCP?
18:56 What is HTTP?
23:37 WebSockets - A Deep Dive
31:20 WebSockets - Full Duplex
34:31 WebSockets - Light Weight
35:23 Downsides of WebSockets
Being a Code Reviewer comes with responsibilities. First and foremost is that your own coding needs to be top notch. In this series, I'll discuss code and the issues with snippets of code. I'll explain the What the Why and the when of the issues with the code presented and what the correct way of writing the code is.
Here is the link to the Original code
github.com/matlus/So-you-want-to-be-a-Code-Reviewer-8---Code-Review
Being a Code Reviewer comes with responsibilities. First and foremost is that your own coding needs to be top notch. In this series, I'll discuss code and the issues with snippets of code. I'll explain the What the Why and the when of the issues with the code presented and what the correct way of writing the code is.
Here is the link to the Original code (The Exercise):
gist.github.com/matlus/df7a5904e8c2e92c907534fdf49b4bfc
Here is the link to the Fixed code (The Answer):
gist.github.com/matlus/a6c2b3007261d0b155b1eea034135acb
Being a Code Reviewer comes with responsibilities. First and foremost is that your own coding needs to be top notch. In this series, I'll discuss code and the issues with snippets of code. I'll explain the What the Why and the when of the issues with the code presented and what the correct way of writing the code is.
Being a Code Reviewer comes with responsibilities. First and foremost is that your own coding needs to be top notch. In this series, I'll discuss code and the issues with snippets of code. I'll explain the What the Why and the when of the issues with the code presented and what the correct way of writing the code is.
Being a Code Reviewer comes with responsibilities. First and foremost is that your own coding needs to be top notch. In this series, I'll discuss code and the issues with snippets of code. I'll explain the What the Why and the when of the issues with the code presented and what the correct way of writing the code is.
This is Part 2 of the NoSQL Database Series. In this video I Introduce you to Cosmos DB, Containers, Partition Keys and RUs per second. In the next video we'll take a look at Data Modeling for Cosmos DB.
00:00 Introduction
00:51 What is Cosmos DB
02:47 Predictable Performance Gauarantee
03:43 Supporting Multiple APIs (SQL API, Table API, Document API, Graph API etcd API)
05:07 Logical and Physical Partitions Explained
06:07 Partition Keys Explained
08:13 Containers are the Unit of Scale
09:47 Replicated across regions
11:15 Containers are Schema Agnostic
13:05 High-Level explanation for Request Units per Second
23:34 Deeper Understanding of Request Units per Second
31:00 RUs is an abstraction over CPU%, Memory% and IOPS%
35:50 Limits for Containers and Partitions
00:00 Introduction
09:32 RDBMS vs NoSQL Databases
09:46 Scale up vs Scale Out
14:21 Indexes Multiple in RDBMs vs Single in NoSQL
15:04 Differences in Query capabilities
18:01 Joins
18:40 Stored Procedures and User defined function
19:32 Schema vs Schema Agnostics
23:19 Referential Integrity
The source code of the project discussed in this video can be found here:
github.com/matlus/PuppeteerSharp-Example
00:00 Introduction
03:26 Starting with the ASP.NET Core Web API Application
07:21 Introduction to the Alexa NLP Browser Console
10:48 Creating Alexa Intents
12:23 Introducing Slots in Alexa Intents
16:21 Settings up the Alexa Webhook to call your Application
20:12 Invoking the Alexa Skill and Intent
21:37 Getting the JSON for the Alexa Intent
22:29 The Ngrok local website
22:41 Having access to the Request via Ngrok
24:28 A Functional ASP.NET Core Alexa Application
27:22 Running the App and having Alexa Respond
Ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels. When using Ngrok with ASP.NET Core, there are a few trials and trepidation that one encounters that render using Ngrok with ASP.NET Core seem impossible. In this videos, I take you through the process of understanding Ngrok, the errors you see and how to fix them. Eventually, we'll have the perfect solution to configuring Ngrok to make it work with ASP.NET Core.
00:00 Introduction
02:10 What is Ngrok - When and Why would you use it
02:56 What are Webhooks
05:36 How does Ngrok fit into your Network?
11:20 Introducing the Ngrok Command line
16:26 Starting withe ASP.NET Core Web API App
19:09 502 Bad Gateway Error
21:47 Solution the the 502 Bad Gateway
24:26 400 Bad Request Invalid Host Name
25:30 Solution the the 400 Bad Request Invalid Host Name issue
26:06 307 Temporary Redirect issue
28:58 Solution to the 307 Temporary Redirect issue
33:10 Getting HTTPS Endpoints working
The total amount of data is too large to fit within the constraints of an individual database
The transaction throughput of the overall workload exceeds the capabilities of an individual database
Tenants may require physical isolation from each other, so separate databases are needed for each tenant
Different sections of a database may need to reside in different geographies for compliance, performance, or geopolitical reasons.
In this episode I introduce the various techniques but focus primarily on Sharding. Horizontal scaling refers to adding or removing databases in order to adjust capacity or overall performance, also called "scaling out". Sharding, in which data is partitioned across a collection of identically structured databases, is a common way to implement horizontal scaling.
We also take a deep dive into Anonymous Types, since they appear similar to Value Tuples.
Chapter Markers
00:00 Introduction
00:57 What is a Hosted Service
04:02 Starting with the code - Creating yout first Worker Service
04:41 Inroducing the Project Template and the parts an pirces
07:45 Explanation of the StartAsync, ExecuteAsync and StopAsync methods
11:40 Building our own Background service by Implementing IHostedService
22:37 Things to think about when deciding to use Worker Services
26:22 Building a RabbitMQ Subscriber Worker Service
42:52 Converting a Worker Service to a Windows Service
46:38 Registering the Worker Service as a Windows Service
52:45 Adding the Worker Service to an ASP.NET Core application
53:17 Stopping and Deleting the Windows Service
53:50 Adding an ASP.NET Core Web API project to the Solution
54:20 Registering and Testing the Worker Service
The source code for solution presented in this video can be found here:
github.com/matlus/WorkerService.NET-Core
Source Code presented in this video:
github.com/matlus/Builder-Pattern-and-CSharp-Expressions
The Visual Studio Solution used in this video can be found here.
github.com/matlus/What-s-Wrong-With-This-Code-HttpClient
Source code for the Visual Studio solution presented in this video can be found here:
github.com/matlus/RazorTemplatEngine
Chapter Markers
00:00 Intro
01:42 Introducing the Adapter Design Pattern UML
06:07 Intent of the Adapter Pattern
07:37 Introduction of the Message Broker Adapters
11:58 When and Why would you use the Adapter Design Pattern
21:37 Real World examples of Adapters
24:40 Alexa as an Adapter
29:21 The Adapter Puzzle - Visual
32:54 The Configuration Provider Design Pattern
38:20 Introducing the MessageBrokerPublisherBase (Adapter)
43:45 Introducing RabbitMQ Publisher Adapter
46:21 Introducing the Service Bus Publisher Adapter
48:23 Introducing the MessageBrokerSubscriberBase (Adapter)
50:06 Introducing RabbitMQ Subscriber Adapter
54:16 Introducing Service Bus Subscriber Adapter
57:23 Seeing it in Action
58:00 The Main Application (Agnostic of actual brokers)
59:05 The MessageBroker Factory
01:02:30 Running the Application using the RabbitMQ Publisher & Subscriber
01:04:51 Running the Application using the Service Bus Publisher & Subscriber
01:05:40 Conclusion
Source code used in this video
github.com/matlus/Adapter-Design-Pattern-Message-Brokers
00:00 Intro
00:31 Introducing Azure Service Bus
01:45 Benefits of PaaS
02:12 Kafka & Azure Event Hubs
03:09 Azure Service Bus Features
06:35 Setting up Azure Service Bus
13:53 Starting with C# Code
14:50 The Publisher application
21:12 The Subscriber application
27:08 Competing Subscribers - Running multiple instance of the consumer
29:08 Creating a second Subscription using the Azure Portal
30:22 Multi-threaded application subscribing to multiple subscriptions
39:59 Advanced Features of Azure Service Bus
Build reliable and elastic cloud apps with messaging
Protect your application from temporary spikes in traffic
Decouple your applications from each other
Connect your existing on-premises systems to cloud solutions
Distribute messages to multiple independent back-end systems
Scale out ordered messaging to multiple readers
Depend on Azure Service Bus when you need highly-reliable cloud messaging service between applications and services, even when one or more is offline. Available in every Azure region, this fully-managed service eliminates the burdens of server management and licensing. Asynchronous operations give you flexible, brokered messaging between client and server, along with structured first-in, first-out (FIFO) messaging, and publish/subscribe capabilities—excellent for tasks like order processing.
The Visual Studio Solution and code used in this video is available here:
github.com/matlus/AzureServiceBusGettingStarted
This is the next installment of te Message Broker Series. In this episode, I'll show you how to get started with RabbitMQ. I'll provide an Docker Image to help you get started with installing RabbitMQ quickly. Next, we'll experiment with various messaging patterns such as Competing Consumers using C# code.
I'll also show you how to use the RabbitMQ Management UI to configure RabbotMQ and test the configuration.
GitHub Repo for Instructions to install RabbitMQ on the local machine
github.com/matlus/RabbitMQInstallation
The Docker Image for a pre-configured RabbitMQ Image
hub.docker.com/repository/docker/matlus/rmq-matlus
Sample code presented in this video
github.com/matlus/RabbitMQ-Pub-Sub-Sample
Chapter Markers
00:00 Introduction
01:05 The GitHub and Docker Hub Repos
00:00 Starting with the Docker Image
02:00 The Docker Run Command line
05:07 Starting with the RabbitMQ MAnagement UI
08:55 Message Properties
12:02 Starting with the C# Solution
14:44 What is a RabbitMQ Channel
15:50 Setting Message PRoperties
18:28 Publishing our first message via C#
18:39 De-Queuing messages using the Management UI
21:31 Building the Subscriber/Consumer using C#
22:37 The various types of Consumers in RabbitMQ library for .NET
24:21 Paring the received Message
25:40 Running the Publisher and Subscriber together
27:32 Competing Consumer/Subscriber Pattern
30:05 Using the Management UI to creating a new Queue and Bind it to the Exchange
32:42 Build the Second Consumer consuming from the second queue
34:37 Conclusion
Message Brokers are an Asynchronous Inter-Application Communication Technology. In this video Introduce various Message Brokers and concepts that you need to know and understand about Message Brokers in general while providing you with real world architectural examples for Why and When to use Message Brokers.
Chapter Markers
00:57 What are Message Brokers
01:20 Kinds of Asynchronous processing
01:22 Async Background Work
01:51 Async Fire & Forget
02:26 Async I/O
02:51 Out of Band Async
03:43 Why or When would you use Message Brokers
04:01 Send An Email Using MSMQ (Simple Architecture)
09:56 SendAn Email Blast Using MSMQ (Simple Architecture)
11:36 Send An Email Using RabbitMQ/ServiceBus/Kafka (Enterprise Level Architecture)
15:58 Various Message Brokers that are available
19:25 QueuesTopics (or Exchanges)
20:56 Queues Competing Subscribers
22:39 Topics (or Exchanges)
27:07 Archtecture of a YouTube like Application (CompetingSubscribers/Load Leveling)
33:19 Real World Scenario 1 Problem Description
34:42 Real World Scenario 1 Solution (Load Balancing)
39:12 Real World Scenario 2 Problem Description
40:33 Real World Scenario 2 Solution (Load Leveling)
45:08 Delivery Options
1. Small
2. Precious
3. Rarely found
I'll present the problem/requirement and then 1 or 2 solutions with code samples
The code used/developed in this video can be found here:
github.com/matlus/DeisgnNuggetEvolutionToStrategy


