4.0.0 • Published 4 years ago

@convoyr/plugin-retry v4.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

@convoyr/plugin-retry

A retry plugin for Convoyr.

This plugin retries failed network requests using a configurable back-off strategy.

Requirements

The plugin requires @convoyr/core and @convoyr/angular to be installed.

Installation

yarn add @convoyr/plugin-retry

or

npm install @convoyr/plugin-retry

Usage

The whole configuration object is optional.

import { ConvoyrModule } from '@convoyr/angular';
import { createRetryPlugin } from '@convoyr/plugin-retry';

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule,
    HttpClientModule,
    ConvoyrModule.forRoot({
      plugins: [createRetryPlugin()],
    }),
  ],
  bootstrap: [AppComponent],
})
export class AppModule {}

Available options

You can give a partial configuration object it will be merged with default values.

PropertyTypeDefault valueDescription
initialIntervalMsnumber300Duration before the first retry.
maxIntervalMsnumber10_000Maximum time span before retrying.
maxRetriesnumber3Maximum number of retries.
shouldRetryRetryPredicateisServerOrUnknownErrorPredicate function to know which failed request should be retried.
shouldHandleRequestRequestCondition() => truePredicate function to know which request the plugin should handle.

Here is an example passing a configuration object.

Keep in mind that HTTP error is not emitted while the plugin is retrying. In the following example the HTTP error will be emitted after 10 retries, then the observable completes.

import { MemoryStorage } from '@convoyr/plugin-cache';

@NgModule({
  imports: [
    ConvoyrModule.forRoot({
      plugins: [
        createRetryPlugin({
          initialIntervalMs: 500,
          maxIntervalMs: 20_000,
          maxRetries: 10,
          shouldRetry: (response) => response.status !== 404,
          shouldHandleRequest: ({ request }) =>
            request.url.includes('api.github.com'),
        }),
      ],
    }),
  ],
})
export class AppModule {}
4.0.0

4 years ago

3.2.0

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.2.0

4 years ago