Skip to content

Commit

Permalink
- transaction scope
Browse files Browse the repository at this point in the history
  • Loading branch information
eben-roux committed May 26, 2017
1 parent 92c930c commit e97774a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 15 deletions.
17 changes: 2 additions & 15 deletions full-configuration.md
Expand Up @@ -118,21 +118,6 @@ For some queueing technologies the `outbox` may not be required. Msmq, for inst
| `durationToIgnoreOnFailure` | 5m,10m,15m,30m,60m | |
| `maximumFailureCount` | 5 | The maximum number of failures that are retried before the message is moved to the error queue. |

You can also set the transaction scope behaviour by providing the `transactionScope` tag. If you want your endpoint to be non-transactional then set the `enabled` attribute to `false`. This will improve performance but messsage delivery and processing cannot be guaranteed. If the underlying queueing infrastrcuture does not support 2-phase commit message delivery and processing also cannot be guaranteed.

```xml
<transactionScope
enabled="true"
isolationLevel="ReadCommitted"
timeoutSeconds="30" />
```

| Attribute | Default | Description |
| --- | --- | --- |
| `enabled` | true | If `true` the message handling code in the receiving pipeline is wrapped in a `TransactionScope`. |
| `isolationLevel` | ReadCommitted | The transaction scope isolation level to use. |
| `timeoutSeconds` | 30 | The number of seconds before a transaction scope times out. |

When the endpoint is not a physical endpoint but rather a worker use the `worker` tag to specify the relevant configuration.

```xml
Expand Down Expand Up @@ -188,3 +173,5 @@ Finally just close the relevant tags.
</serviceBus>
</configuration>
```

You may wish to consider using the [TransactionScope](http://shuttle.github.io/shuttle-core/overview-transactionscope/) section to configure transactional behaviour for your endpoint.
4 changes: 4 additions & 0 deletions guide-upgrade.md
Expand Up @@ -203,6 +203,10 @@ To this end the component interfaces have been moved to the `Shuttle.Core.Infras

It is important to note that the ServiceBus registers quite a few components in the call to `ServiceBus.Register(IComponentRegistry registry)` including some null pattern dependencies. An example of this would be the `ISubscriptionManager` implementation. Should no implementation be registered for `ISubscriptionManager` the implementation is registered as `NullSubscriptionManager`.

### Configuration

For the most part the configuration has stayed the same apart from the `transactionScope` tag that has been removed from the `serviceBus` section and moved to the `Shuttle.Core.Infrastructure` package. The [TransactionScope documentation](http://shuttle.github.io/shuttle-core/overview-transactionscope/) has more information.

### Bootstrapping

When calling `ServiceBus.Register(IComponentRegistry registry)` the registry [container bootstrapping](http://shuttle.github.io/shuttle-core/overview-container/#Bootstrapping) is invoked *before* any components are registered by the `ServiceBus`. This allows any other modules and boostrapped components to register themselves and *override* any subsequent registrations.
Expand Down

0 comments on commit e97774a

Please sign in to comment.