Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
} else {
// we dead-letter the message if we don't know what to do with it.
console.log(
"Unknown message received, moving it to dead-letter queue ",
brokeredMessage.body
);
await brokeredMessage.deadLetter();
}
};
const onError: OnError = (err) => {
console.log(">>>>> Error occurred: ", err);
};
let receiver = queueClient.createReceiver(ReceiveMode.peekLock);
receiver.registerMessageHandler(onMessage, onError, { autoComplete: false }); // Disabling autoComplete so we can control when message can be completed, deferred or deadlettered
await delay(10000);
await receiver.close();
console.log("Total number of deferred messages:", deferredSteps.size);
receiver = queueClient.createReceiver(ReceiveMode.peekLock);
// Now we process the deferred messages
while (deferredSteps.size > 0) {
const step = lastProcessedRecipeStep + 1;
const sequenceNumber = deferredSteps.get(step);
const message = await receiver.receiveDeferredMessage(sequenceNumber);
if (message) {
console.log("Process deferred message:", message.body);
await message.complete();
} else {
console.log("No message found for step number ", step);
}
deferredSteps.delete(step);
{ step: 1, title: "Shop" },
{ step: 2, title: "Unpack" },
{ step: 3, title: "Prepare" },
{ step: 4, title: "Cook" },
{ step: 5, title: "Eat" }
];
const promises = new Array();
for (let index = 0; index < data.length; index++) {
const message = {
body: data[index],
label: "RecipeStep",
contentType: "application/json"
};
// the way we shuffle the message order is to introduce a tiny random delay before each of the messages is sent
promises.push(
delay(Math.random() * 30).then(async () => {
try {
await sender.send(message);
console.log("Sent message step:", data[index].step);
return;
} catch (err) {
console.log("Error while sending message", err);
return;
}
})
);
}
// wait until all the send tasks are complete
await Promise.all(promises);
await queueClient.close();
await sbClient.close();
}
{ step: 1, title: "Shop" },
{ step: 2, title: "Unpack" },
{ step: 3, title: "Prepare" },
{ step: 4, title: "Cook" },
{ step: 5, title: "Eat" }
];
const promises = new Array();
for (let index = 0; index < data.length; index++) {
const message = {
body: data[index],
label: "RecipeStep",
contentType: "application/json"
};
// the way we shuffle the message order is to introduce a tiny random delay before each of the messages is sent
promises.push(
delay(Math.random() * 30).then(async () => {
try {
await sender.send(message);
console.log("Sent message step:", data[index].step);
} catch (err) {
console.log("Error while sending message", err);
}
})
);
}
// wait until all the send tasks are complete
await Promise.all(promises);
await queueClient.close();
await sbClient.close();
}
} else {
// we dead-letter the message if we don't know what to do with it.
console.log(
"Unknown message received, moving it to dead-letter queue ",
brokeredMessage.body
);
await brokeredMessage.deadLetter();
}
};
const onError = (err) => {
console.log(">>>>> Error occurred: ", err);
};
let receiver = queueClient.createReceiver(ReceiveMode.peekLock);
receiver.registerMessageHandler(onMessage, onError, { autoComplete: false }); // Disabling autoComplete so we can control when message can be completed, deferred or deadlettered
await delay(10000);
await receiver.close();
console.log("Total number of deferred messages:", deferredSteps.size);
receiver = queueClient.createReceiver(ReceiveMode.peekLock);
// Now we process the deferred messages
while (deferredSteps.size > 0) {
const step = lastProcessedRecipeStep + 1;
const sequenceNumber = deferredSteps.get(step);
const message = await receiver.receiveDeferredMessage(sequenceNumber);
if (message) {
console.log("Process deferred message:", message.body);
await message.complete();
} else {
console.log("No message found for step number ", step);
}
deferredSteps.delete(step);
async function receiveMessages(ns: ServiceBusClient, sessionId: string): Promise {
// If receiving from a Subscription, use `createSubscriptionClient` instead of `createQueueClient`
const queueClient = ns.createQueueClient(queueName);
const receiver = queueClient.createReceiver(ReceiveMode.peekLock, { sessionId: sessionId });
const onMessage = async (brokeredMessage: ServiceBusMessage) => {
console.log(`Received: ${brokeredMessage.sessionId} - ${brokeredMessage.body} `);
};
const onError: OnError = (err): void => {
console.log(">>>>> Error occurred: ", err);
};
receiver.registerMessageHandler(onMessage, onError);
await delay(5000);
await queueClient.close();
}
// the sample in sessions.ts file
const receiver = queueClient.createReceiver(ReceiveMode.peekLock);
const onMessageHandler: OnMessage = async (brokeredMessage) => {
console.log(`Received message: ${brokeredMessage.body}`);
await brokeredMessage.complete();
};
const onErrorHandler: OnError = (err) => {
console.log("Error occurred: ", err);
};
try {
receiver.registerMessageHandler(onMessageHandler, onErrorHandler, { autoComplete: false });
// Waiting long enough before closing the receiver to receive messages
await delay(5000);
await receiver.close();
await queueClient.close();
} finally {
await sbClient.close();
}
}
let numOfMessagesReceived = 0;
const onMessageHandler = async (brokeredMessage) => {
numOfMessagesReceived++;
console.log(`Received message: ${brokeredMessage.body} - ${brokeredMessage.label}`);
await brokeredMessage.complete();
};
const onErrorHandler = (err) => {
console.log("Error occurred: ", err);
};
console.log(`\nStarting receiver immediately at ${new Date(Date.now())}`);
let receiver = queueClient.createReceiver(ReceiveMode.peekLock);
receiver.registerMessageHandler(onMessageHandler, onErrorHandler);
await delay(5000);
await receiver.close();
console.log(`Received ${numOfMessagesReceived} messages.`);
await delay(5000);
receiver = queueClient.createReceiver(ReceiveMode.peekLock);
console.log(`\nStarting receiver at ${new Date(Date.now())}`);
receiver.registerMessageHandler(onMessageHandler, onErrorHandler);
await delay(5000);
await receiver.close();
console.log(`Received ${numOfMessagesReceived} messages.`);
await queueClient.close();
}