- Test release
- Use more convenient namespaces
- Optimized streamed reading of data
- Dispose connection properly also when an error occurs
- Release 2.0.0
- Add support for schemas to all SQL Server-based things - thanks cleytonb
- Topic/subscriber address length checks on subscription storage because SQL Server is crazy
- Support custom topic/subscriber address lengths in subscription storage via simple schema reflection at startup
- Update to Rebus 3
- Register SQL Transport as if it was an external timeout manager, enabling message deferral from one-way clients
- Fix unspecified saga revision after delete (fixes clash with SQL Server saga auditing assumption that revision be incremented also on delete...)
- Update to Rebus 4
- Add .NET Core support (netstandard1.6)
- Made
CurrentConnectionKey
ofSqlTransport
public
- Add lease-based transport - thanks MrMDavidson
- Add creation time column to data bus storage - thanks IsaacSee
- Shift transports to use table-per-queue layout to improve overall performance and avoid having a long queue bring everything to a halt - thanks magnus-tretton37
- Change meaning of the secret and pretty un-documented
rbs2-msg-priority
header to work like it seems most people expect it to: Higher number means higher priority - Change all
datetime2
column types to bedatetimeoffset
instead to make data less tied to the SQL Server instance (probably "server time of ...") that created it - Retry schema generation if it fails, most likely because of race condition between checking for the existence of a table and trying to create it
- Add ambient transaction support, so 2PC can be enabled if one desires - thanks larsw
- Fix double-disposal of renew timer - thanks MrMDavidson
ConfigureAwait(false)
in places that cannot result in callbacks to Rebus extensibility points- Change receive ordering such that the visiblity time takes precedence over insertion time. This way, messages deferred at different times into the future will arrive in the scheduled order and not risk being received out-of-order because they happen to have been inserted that way
- Add
READCOMMITTEDLOCK
hint such that receive locks work properly also when running the database with snapshot isolation enabled - Target .NET 4.5, .NET 4.6, and .NET Standard 2.0
- Reduce query plan cache pollution by coming up with lengths for all parameterized queries
- Improve error message when registering a timeout manager in conjunction with the SQL transport (which has built-in message delay, obviating the need for actual timeout storage)
- Correct name of connection string parameter in configuration extensions
- Add
READCOMMITTEDLOCK
also to the receive code of the lease-based transport
- Fix problem with closed connection when enlisting in ambient transaction - thanks thomasdc
- Change default data type of timeouts table PK IDs to be
BIGINT
- thanks rsivanov
- Update Rebus dependency to version 6 - thanks nativenolde
- Make it possible to avoid automatic schema creation - thanks MrMDavidson
- Simplify configuration API and deprecate swarm of old overloads
- Implement new data bus storage APIs that enable querying and deleting
- Add two more indexes to improve performance and resource utilization of lease-based transport - thanks MrMDavidson
- Reduce implicit conversions and improve precision in SQL transport - thanks tompazourek
- Fix bug that would ignore the setting for customizing the delay between cleanup cycles
- Add ability to auto-delete input queue when shutting down - thanks rsivanov
- Fix bug that would not make column types for "leaseduntil" and "leasedat" DATETIMEOFFSET as intended
- Catch and log exceptions caught when failing to update the lease for long-running message handlers and lease-based transport - thanks clegendre
- Replace dependency on System.Data.SqlClient with Microsoft.Data.SqlClient, because it's the future!
- Only target .NET Standard 2.0, because requiring consumers to be on .NET 4.6.2 or .NET Core 2 is fair
- Modify receive index for better performance - thanks seankearon
- Add
ISagaSerializer
thus making it possible to customize how saga data is serialized - thanks mathiasnohall
- Don't leave connection with NOCOUNT ON in the transport - can interfere with other stuff using the connection
- Adjustments to the new saga data serializer: Pass type to deserialize method (note: this is breaking, if you've implemented your own
ISagaSerializer
) - thanks mathiasnohall
- Correct XML docs on
DbConnectionFactoryProvider
(were copy/pasted from another implementation ofIDbConnectionProvider
), remove isolation level property from it (wasn't used), and remove logging antipattern
- Add necessary overloaded constructor to
SqlServerTransportOptions
to enable resolving anIDbConnectionProvider
implementation that requires other things (e.g.IRebusLoggerFactory
). Also addSqlConnectionOpening
callback toDbConnectionProvider
, which makes for a good place to set theAccessToken
property ofSqlConnection
- Add addition configuration overloads to allow for consistent level of customization across persisters
- Fix bug in saga data serializer configuration - thanks mathiasnohall
- Fix disposal of data reader when read attempt does not find anything and must throw
- Make it possible to disable native message defer functionality of SQL transport, thus making it possible to run a dedicated SQL timeout manager (like with any other transport) together with the SQL transport
- Migrate old receive index to new, improved index - thanks Simplicitdk
- Add outbox 🙂
- Fix transport table name parser to work like SSMS, except for the case where a name consists of more than two .-delimited parts (e.g. like
CompanyName.ProjectName.ServiceName
) – in that case, the name is interpreted as a table name with default schema, i.e. corresponding to[dbo].[CompanyName.ProjectName.ServiceName]
- Optimize saga updates by skipping update of the index table when the saga data hasn't changed
- Update to Rebus 8
- Fix saga data deserialization bug that would result in trying to deserialize the saga data as the wrong type
- Make
IsExternalInit
class declaration internal - thanks zlepper
- Fix saga persister's ability to query for sagas with NULL as a property value
- Update Microsoft.Data.SqlClient and Rebus dependencies to 5.1.5 and 8.2.2 respectively
- Fix yet another saga-persister-header-correlation scenario
- Fix bug that would result in sending outgoing outbox messages sent from a failing 1st level handler IF the 2nd level handler completed successfully
- Update Microsoft.Data.SqlClient dependency to 5.2.2
- Add readme to NuGet package
- Add section about outbox to readme - thanks jeroenkoknl
- Reduce SQL Server query plan cache pollution - thanks blundell89