Skip to content

Releases: Azure/azure-webjobs-sdk

2.0.0

28 Feb 19:56
Compare
Choose a tag to compare

This 2.0 release has been long overdue :) Following is a list of the changes since the last beta2 release, detailed notes for that and the beta1 release are below as well in their separate beta1, beta2 release note sections. This 2.0 release includes all of those changes, including some breaking changes which we've tried to document here.

  • New built in datetime system binding, and expanding the rand-guid binding
    • you can now use expressions like {datetime}, {datetime:yyyy-mm-dd}, {datetime:G} in your binding expressions, e.g. to timestamp a blob name, etc.
    • you can now use expressions like {rand-guid}, {rand-guid:N} which outputs a guid w/o hyphens.
    • the format expression after the ':' can be any valid format expression for the target type (e.g see doc for DateTime format strings here
  • BlobTrigger poison queue changes in multi storage account scenarios (breaking) #804
    • previously the webjobs-blobtrigger-poison queue was always created in the primary storage account, even if the target account for the BlobTrigger function was a different account.
    • now the behavior is that the poison queue lives in the same account the the trigger targets
  • Made Queue VisibilityTimeout configurable via JobHostQueuesConfiguration.VisibilityTimeout #844
    • this allows you to control the retry interval between failed processing attempts
  • Made JobHostQueuesConfiguration.MaxPollingInterval configurable at the QueueProcessor level as well.
    • you can now configure this per queue like many of the other queue control knobs
  • EventHub binding performance improvements
  • Improvements to ServiceBus BrokeredMessage conversions to byte[] and other types
  • Make IValueProvider.GetValue async (breaking). This is only an issue for extension authors
  • Made TraceFilter.Events a method that returns a snapshot, rather than it being a live collection as it was before (breaking)
  • Large refactoring/replat of Queue/Table input/output bindings
    • we have a bunch of new extensibility interfaces (currently internal, not released) that we're in the process of finishing up. While these are not yet ready for public consumption, we have replatted some of the bindings to them already in a non-breaking way
  • Miscellaneous other bug fixes

v2.0.0-beta2

14 Nov 23:49
Compare
Choose a tag to compare
v2.0.0-beta2 Pre-release
Pre-release

Main items in this release:

  • Table binding
    • added new JObject/JArray/IAsyncCollector<JObject>/ICollector<JObject> bindings
    • added the ability to specify table Filter/Take expressions via TableAttribute. Used in conjunction with the new JObject/JArray bindings to allow query options to be specified declaratively
  • Blob binding
    • added support for CloudAppendBlob
    • in addition to being able to bind to CloudBlockBlob and CloudPageBlob, you can now bind to CloudAppendBlob
  • Additions to TimeoutAttribute to allow the host to be brought down when timeout fires
    • e.g. `[Timeout("00:00:01", ThrowOnTimeout = true)]
  • EventHubTrigger
    • Allow EventProcessorOptions and PartitionManagerOptions to be specified when creating EventHubConfiguration
    • allow binding to byte[]
    • lots of other improvements to the EventHub bindings
  • New Twilio binding for sending SMS messages
    • send an SMS message easily from your job function!
    • details here on usage
  • TimerTrigger - lots of fixes and stability improvements. Fixes include:
  • ApiHub trigger
    • added support for poison queue handling
    • max retry count can be specified via ApiHubConfiguration.MaxFunctionExecutionRetryCount
    • when a file exceeds this retry count, a message for that file is written to queue webjobs-apihubtrigger-poison
  • NotificationHub binding
    • added NotificationHubClient binding
    • enabled "test send" debugging via NotificationHubsAttribute.EnableTestSend
  • SendGrid binding
    • moved to latest SendGrid v3 API (Breaking)
    • see samples here for new signatures and usage
  • moved to latest versions of our package dependencies (Storage, ServiceBus, etc.)
  • bug fixes

v2.0.0-beta1

09 Nov 20:05
Compare
Choose a tag to compare
v2.0.0-beta1 Pre-release
Pre-release

Main items in this release:

  • Move to latest Azure Storage SDK version 7.1.2
  • In general, moving to latest versions across all dependencies
  • Storage Emulator support. We've removed the checks that previously disabled this.
  • Simplified programming model for WebJobs SDK Extension authors (see details here)
  • New strategy for BlobTrigger polling that decreases trigger delays
  • LOTs of new trigger/binding extensions. Many of these are in the azure-webjobs-sdk-extensions repo. See that repo for more details. The new extensions include:
    • EventHubs trigger/binder (see documentation)
    • ApiHubFile trigger/binder
    • ApiHubTable binder
    • DocumentDB binder
    • NotificationHubs binder
    • MobileApps binder
  • Minor breaking changes to the SendGrid binding. To bind to a SendGridMessage you must now use an out parameter, e.g. out SendGridMessage. The ref keyword is also not supported anymore. To conditionally send a message, or to send multiple messages, bind to IAsyncCollector<SendGridMessage> or ICollector<SendGridMessage>.
  • Expand IBinder scenarios by adding a new Binder type which can also be bound to. Binder provides additional APIs and functionality over IBinder
  • MakeStorageAccountAttribute/ServiceBusAccountAttribute more flexible by supporting connection setting names that aren't prefixed with "AzureWebJobs" (which was the previous requirement)
  • Support for rand-guid binding parameter. E.g. you can now use the binding parameter in binding expressions like [Blob("output/{rand-guid}")]. The parameter will be automatically resolved to a new guid value.
  • Allow JobHost.Call argument dictionary to include binding data, in addition to parameter values
  • TimerTrigger Updates
    • Moved schedule tracking from file storage to blob storage to deal with slot swap issues
    • Adding INameResolver support to TimerTrigger. E.g. [TimerTrigger("%MySchedule%")], where %MySchedule% will be auto resolved if there is a corresponding app setting by that name containing the schedule value.
  • Lots of bug fixes

v1.1.2

09 Nov 20:06
Compare
Choose a tag to compare

This release was a hotfix release. The only change in this release was to remove the Azure Storage SDK version cap we had in place. See this issue for more details on that.

v1.1.1

09 Nov 20:07
Compare
Choose a tag to compare
  • Added support for cross function singleton locking via SingletonScope.Host. See the Singleton wiki page for more information.
  • Added a JobHostConfiguration.IsDevelopment flag and a corresponding JobHostConfiguration.UseDevelopmentSettings() method to facilitate local development. See the Running Locally wiki page for details.
  • Added TraceLevelAttribute to allow job functions to declare the level of Console/Dashboard logging to perform for that function. By setting the level to TraceLevel.Off a function can opt out of Dashboard logging (since this logging introduces a bit of overhead) to increase throughput. If the TraceLevel is set to TraceLevel.Error for a function, successful invocations will not produce logs, but if a function errors it will produce logs (both Console and Dashboard).
  • For ServiceBus, added a new virtual method MessagingProvider.CreateMessageReceiver to allow users to further customize MessageReceivers as needed. For example, you can now configure advanced options like PrefetchCount, etc.
  • Added ServiceBusConfiguration.PrefetchCount as a top level configuration setting.
  • Added byte[] bindings for BlobAttribute and BlobTriggerAttribute. You can now bind blobs to a byte[] for both input and output.
  • Making our Azure Storage SDK package version requirement explicit to prevent accidental upgrade issues (since the SDK currently only works with version 5.0.2 and below. The package dependency is now set to [4.3.0, 5.0.2].
  • Fixed several customer reported bugs

v1.1.0

09 Nov 20:22
Compare
Choose a tag to compare

See below prerelease versions for all the features in 1.1.0. Check out the WebJobs SDK Extensions repo for new triggers such as Files, Timers, SendGrid, WebHooks and more.

v1.1.0-rc1

09 Nov 20:22
Compare
Choose a tag to compare
v1.1.0-rc1 Pre-release
Pre-release
  • Added TimeoutAttribute allowing functions to declaratively request function cancellation when a timeout expires. This builds on our existing CancellationToken binding support.
    • The attribute can be applied at the class/method level. A global timeout can also be specified via JobHostConfiguration.FunctionTimeout.
    • To receive the timeout cancellation, a function must include a CancellationToken parameter
    • The function should pass the token along to any sub Tasks that are initiated. If the function is not async, it can poll the token for cancellation (CancellationToken.IsCancellationRequested), or use the other CancellationToken monitoring methods.
    • sample here
  • Added DisableAttribute allowing for contitional enable/disable of triggered functions (see sample here).
    • e.g. you can dynamically enable/disable functions based on application settings
  • Added a CloudBlobDirectory binding for blobs
  • Updates to Singleton
    • allow specification of storage account (via SingletonAttribute.Account) supporting global level locks
    • added SingletonMode allowing for Listener level singletons
  • Change JobHost to start all triggered function listeners in parallel
  • WebHook Trigger Updates
    • allow WebHook functions to return custom responses (via WebHookContext binding)
    • added ASP.NET WebHooks SDK integration
  • ErrorTrigger
    • allow job functions to be triggered based on error rates (e.g. sliding window, custom, etc.)
    • integrate with 3rd party services to send Email/SMS alerts
    • see Error Alerting for more information
  • TimerTrigger Updates
    • added TimerTriggerAttribute.RunOnStartup to allow a function to be run immediately on startup (then on schedule thereafter)
  • Lots of bug fixes

v1.1.0-beta1

09 Nov 20:23
Compare
Choose a tag to compare
v1.1.0-beta1 Pre-release
Pre-release
  • IEnumerable binding for Blobs
    • You can now bind to a collection of blobs (e.g. IEnumerable, IEnumerable, CloudBlobContainer, etc.)
    • See the tests here for some examples.
  • Multiple Storage Account support
    • You can now use multiple storage accounts in your job functions. The account to use can be specified at the Parameter/Function/Class level using the new StorageAccount attribute.
    • See sample here.
    • Addresses issue #395.
  • Dashboard Multiple Storage Account support
    • The Dashboard can now correctly display Blob links to blobs in different storage accounts.
    • Addresses issue #294.
  • ServiceBus Multiple Storage Account support
    • Similar to the StorageAccountAttribute discussed above, there is a ServiceBusAccountAttribute that allows you to specify the ServiceBus account to use in the same way.
    • See sample here
  • Added JobHostConfiguration.StorageClientFactory
    • Allows you to control/customize the Azure Storage SDK clients used by the WebJobs SDK. You can use this to specify/set advanced options on CloudQueueClient/CloudBlobClient/CloudTableClient, etc.
    • Addresses issue #497.
  • WebHook Trigger
    • A new trigger extension for triggering functions based on WebHook HTTP requests.
    • See the WebHooks Walkthrough for more information.
  • SendGrid Binder
  • Updates to all Nuget dependencies used by the SDK (moved to latest versions of all dependencies within the current major version).

v1.1.0-alpha2

09 Nov 20:26
Compare
Choose a tag to compare
v1.1.0-alpha2 Pre-release
Pre-release

See Azure Blog post for more details on this release.

  • Singleton
    • New SingletonAttribute for job functions that allows you to declaratively specify that only a single instance of the function should be run at any given time (even across scaled out instances).
    • Behind the scenes, this distributed locking is achieved by using Blob leases.
    • Singleton locking can be based on a custom scopes, which can come from path binding (i.e. from trigger data)
    • Support for Singleton Listeners (i.e. a trigger binding can declare its listener Singleton). An example of this is TimerTrigger. For a timer, you don't want it running the same schedule on multiple scaled out instances.
    • Sample here
  • Logging/Tracing Extensibility
    • Allow custom TraceWriters to be plugged into the host via JobHostConfiguration.Tracing
    • Allow the Console output TraceLevel to be customized via JobHostConfiguration.Tracing.ConsoleLevel. This is very useful (and recommended) for local debugging.
    • Added a new TraceWriter binding (similar to TextWriter) that allows functions to bind to the TraceWriter
    • Sample here
  • ServiceBus Messaging improvements
    • Allow deep customization of Message processing via ServiceBusConfiguration.MessagingProvider
    • MessagingProvider supports customization of the ServiceBus MessagingFactory and NamespaceManager
    • A new MessageProcessor strategy pattern allows you to specify a processor per queue/topic
    • Support message processing concurrency by default (previously there was no concurrency)
    • Easy customization of OnMessageOptions via ServiceBusConfiguration.MessageOptions
    • Sample here
  • Lowered the JobHostQueuesConfiguration.MaxPollingInterval to 100ms (from 2 seconds)
  • Fixed bugs in Blob container scan logic
  • Misc. bug fixes

v1.1.0-alpha1

09 Nov 20:27
Compare
Choose a tag to compare
v1.1.0-alpha1 Pre-release
Pre-release

See Azure blog post for more details.

  • Open Sourced the WebJobs SDK
  • Extensibility Model for Triggers / Binders
  • New TimerTrigger binding for scheduled jobs
  • New FileTrigger binding for triggering based on file system events (includes File binding)
  • Support for custom Table binding extensions
  • Queue Processing improvements
    • Allow custom QueueProcessors to be defined per queue to customize message processing
    • Added JobHostQueuesConfiguration.NewBatchThreshold to allow for more control over concurrency
    • Sample here
  • Allow AccessRights to be specified on ServiceBusTriggerAttribute/ServiceBusAttribute (for scenarios where you might not have Manage rights). Sample here
  • Misc. bug fixes