node-red-contrib-azure-service-bus-message-receiver
Version:
Receives queue messages from Azure Service Bus Queues
57 lines (42 loc) • 1.48 kB
JavaScript
const { ServiceBusClient } = require("@azure/service-bus");
module.exports = function (RED) {
function ReceiveMessageNew(config) {
RED.nodes.createNode(this, config);
const node = this;
const created = new Date().toISOString();
node.log("receive-message node created");
const serviceBusClient = new ServiceBusClient(config.connectionString);
const receiver = serviceBusClient.createReceiver(config.queue);
node.on("close", async (done) => {
node.log("Closing " + created + " - " + node.id);
if (receiver) {
await receiver.close();
}
done();
});
node.status({ fill: "green", shape: "dot", text: "connected" });
const processMessageHandler = (message) => {
node.status({ fill: "blue", shape: "ring", text: "got a message" });
node.send({
payload: message.body,
});
};
const processErrorHandler = (error) => {
if (error == "No messages to receive") {
node.status({ fill: "green", shape: "dot", text: "connected" });
} else {
node.error(error);
node.status({
fill: "red",
shape: "ring",
text: "error, see debug or output",
});
}
};
receiver.subscribe({
processMessage: processMessageHandler,
processError: processErrorHandler,
});
}
RED.nodes.registerType("receive-message-new", ReceiveMessageNew);
};