Skip to content

Commit

Permalink
working version
Browse files Browse the repository at this point in the history
  • Loading branch information
Bryan Hogan committed Oct 1, 2019
0 parents commit 7ec8c27
Show file tree
Hide file tree
Showing 15 changed files with 880 additions and 0 deletions.
293 changes: 293 additions & 0 deletions .gitignore
@@ -0,0 +1,293 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.zip
*.pptx
*.ppt
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
.vscode/
.git/
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Typescript v1 declaration files
typings/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
*.binlog
22 changes: 22 additions & 0 deletions Readme.md
@@ -0,0 +1,22 @@
# Try .NET Enabled Samples
![dotnet try Enabled](https://img.shields.io/badge/Try_.NET-Enabled-501078.svg)

*Please read the [Try .NET quick setup guide](Setup.md) before starting the tutorial below.*

<p align ="center">
<img src ="http://www.thepollyproject.org/content/images/2016/10/Polly-Logo@2x.png" width="250">
</p>
<h1 align ="center">Try .NET Samples of Polly, the .NET Resilience Framework</h1>

<h3 align ="center">Polly is a resilience framework for .NET, with it your applications can easily tolerate transient faults and longer outages in remote systems or infrastructure. With just a few lines of code your application will be far more robust and reliable.</h3>

### Table of Content
- [Before you add Polly](lettingItFail.md)
- [Retrying when you get an exception](retryIfException.md)
- [Retrying when you get a bad result](retryIfIncorrectStatus.md)
- [Combining Result and Exception Based Retries](retryIfIncorrectStatusOrException.md)
- [Waiting Before Retrying](waitAndRetry.md)
- [Fallbacks 1](fallingBack.md)
- [Fallbacks 2](fallingBackAndReturningADefault.md)
- [Basic Circuit Breaker](basicCircuitBreaker.md)
- [Advanced Circuit Breaker](advancedCircuitBreaker.md)
11 changes: 11 additions & 0 deletions advancedCircuitBreaker.md
@@ -0,0 +1,11 @@
# Circuit Breaker 2

### Advanced circuit breaker
The advanced circuit breaker breaks the circuit if a if a threshold of failures is reached within a specified time period and with a minimum number of requests reached in that time period.

In this example the circuit breaks when there are 50% failures, in a 3 second sampling window, with a minimum throughput of 6 request in the 3 second window; if the circuit breaks it will be open for 5 seconds. When the circuit breaker is open no traffic will cross it, instead a `BrokenCircuitException` will be thrown.

``` cs --region advancedCircuitBreaker --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Caching &raquo;](../caching.md) Previous: [Basic Circuit Breaker &laquo;](../basicCircuitBreaker.md)
9 changes: 9 additions & 0 deletions basicCircuitBreaker.md
@@ -0,0 +1,9 @@
# Circuit Breaker 1

### Basic circuit breaker
The basic circuit breaker breaks the circuit if a set number of consecutive of errors occur. When the circuit breaker is open no traffic will cross it, instead a `BrokenCircuitException` will be thrown.

``` cs --region basicCircuitBreaker --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Advanced Circuit Breaker &raquo;](../advancedCircuitBreaker.md) Previous: [Fallbacks 2 &laquo;](../fallingBackAndReturningADefault.md)
11 changes: 11 additions & 0 deletions fallingBack.md
@@ -0,0 +1,11 @@
# Polly Fallbacks 1

### When all else fails...do something.
There are times when no number of retires will solve a problem, the underlying service just won't respond. In this case the Fallback policy is you last resort. It can page an admin, scale a service or return a default.

This example "pages" an admin but you can do anything you want.

``` cs --region fallingBack --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Fallbacks 2 &raquo;](../fallingBackAndReturningADefault.md) Previous: [Waiting Before Retrying &laquo;](../waitAndRetry.md)
9 changes: 9 additions & 0 deletions fallingBackAndReturningADefault.md
@@ -0,0 +1,9 @@
# Polly Fallbacks 2

### When all else fails...return a default
Sometimes it makes sense to return a default or safe value from a fallback. In this example a quantity of zero is returned if the request fails.

``` cs --region fallingBackAndReturningADefault --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Basic Circuit Breaker &raquo;](../basicCircuitBreaker.md) Previous: [Fallbacks 1 &laquo;](../fallingBack.md)
10 changes: 10 additions & 0 deletions lettingItFail.md
@@ -0,0 +1,10 @@
# Polly Retries Part 1

### Letting a request fail - not using Polly yet
Before adding Polly let's see how an application without Polly might behave.
Here we are trying to write to a database, but the request will fail and an exception will be thrown.

``` cs --region lettingItFail --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Retrying When an Exception Occurs &raquo;](../retryIfException.md) Previous: [Home &laquo;](../README.md)
13 changes: 13 additions & 0 deletions retryIfException.md
@@ -0,0 +1,13 @@
# Polly Retries Part 2

### Retrying When an Exception Occurs
The Polly NuGet package has been added and we are going to use the Retry Policy when querying database.
The policy states that if an exception occurs, it will retry up to three times.

Note how you execute the unreliable code inside the policy. `retryPolicy.Execute(() => errorProneCode.QueryTheDatabase());`


``` cs --region retryIfException --source-file .\src\Program.cs --project .\src\PollyDemo.csproj
```

#### Next: [Retrying Based on a Result &raquo;](./retryIfIncorrectStatus.md) Previous: [Home &laquo;](../README.md)

0 comments on commit 7ec8c27

Please sign in to comment.