graphql-directive-retry
v1.0.0
Published
A GraphQL schema directive to retry resolvers
Downloads
7
Readme
graphql-directive-retry
Instead of adding retry logic inside the resolver implementation, use this schema directive to add retry declaratively
Usage
const { retryDirective, retryDeclaration } = require('@lifeomic/graphql-directive-retry');
const { makeExecutableSchema } = require('graphql-tools');
const { graphql } = require('graphql');
const typeDefs = `
${retryDeclaration('retry')}
type Query {
flakyFunction(arg: String!): String! @retry(maxTimeout: 100)
}
`;
Customizing timeout behavior
This directive is based on promise-retry and you can use the same configuration options.
Field Config
You can configure retry behavior on a per-field basis like this:
type Query {
flakyFunction(arg: String!): String!
@retry(retries: 1, minTimeout: 100, maxTimeout: 200, factor: 1.1)
}
Global Config
You can configure the default retry behavior for all resovlers with a retry directive by providing the configuration in the execution context. Here is an example:
const response = await graphql(
yourSchema,
yourQuery,
rootObject,
{
... yourContext
retryDirectiveConfig: {
retries: 0
}
},
{}
);