1.0.1 • Published 1 year ago

graphql-servicebus-queues v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

graphql-servicebus-queues

A GraphQL subscriptions library for Azure Service Bus Queues - a cheaper alternative to using Service Bus Topic/Subscriptions.

Due to the nature of Service Bus queue clients being competing consumers, only a single instance/replica of a GraphQL API can be used with this library. Running multiple instances may result in messages not reaching the user agents that have subscribed to a particular GraphQL subscription. If multiple instances are required, consider using a library that supports Service Bus Topics/Subscriptions.

Build

npm version

Usage

const serviceBusQueue = new ServiceBusQueue({
  queueName: '[QUEUE NAME]',
  connectionString: '[CONNECTION STRING]',
  eventNameKey: '[MESSAGE PROPERTY NAME]',
});

const resolvers = {
  Subscription: {
    telemetry: {
       subscribe: () => ({
          [Symbol.asyncIterator]: () => serviceBusQueue.asyncIterator(['[EVENT NAME]']),
       }),
    }
  }
}
PropertyDescription
queueNameThe name of the Service Bus queue to receive messages from.
connectionStringThe Service Bus connection string to connect to the queue.
eventNameKeyThe name of the Service Bus message property whose value indicates the event type of the message. Messages are delivered to a GraphQL subscription if the value of the message property matches the event label provided in the GraphQL subscription resolver (i.e. if value of the message property namedMESSAGE PROPERTY NAME equals EVENT NAME).

Detach Forced Error

Depending on message activity, the following error message may occur if no messages have been received from Service Bus over a period of time. This is normal behaviour and can be safely ignored. See the Service Bus documentation for more details.

amqp:link:detach-forced:The link 'G2:7223832:user.tenant0.cud_00000000000-0000-0000-0000-00000000000000' is force detached by the broker due to errors occurred in publisher(link164614). Detach origin: AmqpMessagePublisher.IdleTimerExpired: Idle timeout: 00:10:00. TrackingId:00000000000000000000000000000000000000_G2_B3, SystemTracker:mynamespace:Topic:MyTopic, Timestamp:2/16/2018 11:10:40 PM