servicebus-notifications-reader
sbnoti
because Azure has problems with large path names -__-)
(or Notifications Reader for Azure Service Bus
Usage:
SbnotiBuilder = require("sbnoti") reader = new SbnotiBuilder().withServiceBus #required connectionString: "the azure connection string" topic: "the topic name" subscription: "the subscription name"#All settigns below are optional. The values are the defaults..withFilters [ { name: "theNameOfTheCustomFilter", expression: "created = True" } ].withLogging true # or simply .withLogging().withConcurrency 25.withReceiveBatchSize 5.withWaitForMessageTime 3000# new health notifiying option:.withHealth redis: host: "host" port: 6739 auth: "cadenaDeAuth" db: 2 app: "la-aplicacion-que-esta-usando-sbnoti".build()
To read from the dead letter subscription
reader = new SbnotiBuilder().withServiceBus #requiredconnectionString: "the azure connection string"topic: "the topic name"subscription: "the subscription name".fromDeadLetter().build()
Also read from regular and dead letter at the same time!
reader = new SbnotiBuilder().withServiceBus #requiredconnectionString: "the azure connection string"topic: "the topic name"subscription: "the subscription name".activeForpending: true #Read from regular subscriptionfailed: true #Read from dead letter.build()
TIP: Use the booleans for pending and failed to control which readers are active
A nice function to transform strings 'true' and 'false' to actual the boolean value or a default:
stringToBoolean: (value,_default) ->(value?.toLowerCase?() ? _default?.toString()) == 'true'
To start the reader with a given process
Promise = require("bluebird")reader.run (message) =># do something with messagePromise.resolve "message processed ok"# or...Promise.reject "error processing the message"
To make an http request for each message
messageToOptions = (message) =>uri: "http://an.endpoint.com"body: message.dataheaders:authorization: "access token"reader.runAndPost messageToOptions, ignoredStatusCodes: [409,503]reader.runAndGet messageToOptionsreader.runAndPut messageToOptionsreader.runAndDelete messageToOptions#or alsomethod = 'post', #'get','delete','update'reader.runAndRequest messageToOptions, method, ignoredStatusCodes: [409]