Releases: HangfireIO/Hangfire.Azure.ServiceBusQueue
5.0.0
Release Notes
Huge work by @GiampaoloGabba to resurrect this project:
- Support to
.NET Standard 2
- Use of
Azure.Messaging.Servicebus
SDK (the latest, and recommended, Azure Service Bus .NET SDK available) - New overload for
LinearRetryPolicy
with a TimeSpan array (to define custom waits between retries) - New setting for
QueuePollInterval
(to be able to have an additional timeout in case of low read timeouts and multiple queues) - New
GlobalConfigurationExtensions
to play nice with .NETCoreServiceCollection
configuration - Updated
readme.md
Also, removed the MinSyncReceiveTimeout
from ServiceBusQueueJobQueue.cs
because with the new SDK, waiting for just 1 Tick doesnt work: no messages are retreived, moreover,all the queues should honor the LoopReceiveTimeout
option.
4.1.0
Added ServiceBusQueueOptions.LockRenewalDelay
option that controls the delay between lock renewal commands are sent to ServiceBus, when background job is still processed by a worker. Previously lock renewal attempt was made just a second before the deadline, and we had the following problems.
- Delay was calculated as a difference between message's timestamp that was based on ServiceBus host time, and processing server's current time. So when time on those machines was non-synchronised (very likely scenario), we may send lock renewal query too late.
- We have only a single attempt to renew a lock. When that attempt fails even due to a transient error like network blip (we are in cloud, they happen constantly), lock renewal process is stopped, causing unwanted retry.
Instead, the new option allows us to send renewal queries with the configured delay. We can set it to 15 seconds, with lock timeout of 1 minute and have ~4 attempts to renew the lock even if there are transient errors.
This release doesn't change the previous behaviour that will be used by default. The new behaviour is optional, and may be changed to the default one in future versions.
4.0.0
Provides support for Hangfire v1.7.0 (https://github.com/HangfireIO/Hangfire/releases/tag/v1.7.0) that has breaking changes to storage interfaces.
3.0.1
Minor release to enable configuration of RequiresDuplicateDetection
that is a premium-only option that cannot be set on Basic queues.
Default configuration migrated back to not setting this value at all and taking the default value.
3.0.0
Performance and reliability improvements. No code changes are required but new default behaviour warrants a major version bump:
- When looping around all queues to check for jobs reduce wait time from 5 seconds to 500ms. This increases throughput at potentially increased costs in Azure due to higher request counts
- Default linear retry policy of 3 times at 1 second intervals when enqueuing jobs. Retry policy is configurable
- Default queue creation to enable duplicate message detection, using job id as MessageId to provide deduplication (this does not affect existing queues)
2.2.1
A minor update that changes when queue clients are created, to defer the work until they are actually used to avoid work up-front of every application start
2.2.0
A recommended upgrade for all users to improve the reliability and accuracy of the service bus integration:
- Messages will be kept alive during processing to avoid
MessageLockLostException
when processing takes longer than the queue'sLockDuration
- Fix job counts when deadlettered messages exist on queue
This release also adds a number of integration tests for the monitoring and queue implementations for a better development experience.
2.1.1
Very small logging improvement from previous release:
- Better exception message if no Manage permission when checking queue existence
2.1.0
- New option
CheckAndCreateQueues
that allows queues to be created without theManage
permission as they will be used as-is without any pre-checks. Default continues to betrue
- A small amount of logging has been added on initialisation to aid diagnosing start-up issues
QueueClient
objects are created up-front and stored for quicker retrieval on use (i.e. sending & receiving messages)
2.0.0
Upgraded Hangfire.Core & Hangfire.SqlServer dependencies to 1.5, which has changed interfaces and therefore requires a major bump.
No new features in this release.