
Security News
Feross on TBPN: How North Korea Hijacked Axios
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.
A lightweight job queue system using MongoDB and Mongoose. Useful for handling background processing like sending notifications, emails, etc., without needing Redis or RabbitMQ.
npm install mongoose uuid
Make sure MongoDB is running on your system:
mongod
npm install soft-queue
index.jsconst Queue = require("./Queue");
const { init } = require("./db/dbConfig");
const main = async () => {
await init({
uri: 'mongodb://localhost:27017/soft-jobQueueDB',
options: {
useNewUrlParser: true,
useUnifiedTopology: true,
}
});
// Create a new queue
const queue = await Queue.createQueue('notifications');
console.log({ queue });
// Register a consumer for the 'notifications' queue
Queue.registerConsumer('notifications', async (job) => {
console.log(`🔔 Sending notification: ${job.message}`);
await new Promise(resolve => setTimeout(resolve, 500)); // simulate delay
console.log(`✅ Notification sent: ${job.message}`);
});
// Add jobs to the queue
await Queue.enqueue('notifications', { message: 'Welcome to our service!' });
await Queue.enqueue('notifications', { message: 'Your account has been created.' });
await Queue.enqueue('notifications', { message: 'Your password has been changed.' });
// Count pending jobs
const count = await Queue.getJobCount('notifications');
console.log({ count });
// Start processing jobs in the queue
Queue.startProcessing('notifications');
};
main();
createQueue(queueName, options)Create a new queue.
registerConsumer(queueName, async (job) => { ... })Registers a function to handle jobs in a queue.
enqueue(queueName, jobData, options)Adds a new job to a queue.
startProcessing(queueName)Begins processing the queue using the registered consumer.
getJobStatus(queueName, jobId)Get status of a specific job.
getJobCount(queueName, filters)Count jobs in a queue with optional filters.
getJobs(queueName)Retrieve all jobs in a queue.
clearQueue(queueName)Delete all jobs in a specific queue.
clearAllQueues()Remove all queues and their jobs.
getAllQueues()Get all queues with their jobs.
removeQueue(queueName)Permanently delete a queue.
deactivateQueue(queueName)Pause job processing for a queue.
activateQueue(queueName)Resume job processing for a queue
{ queue: { queueId: ..., queueName: 'notifications', ... } }
🔔 Sending notification: Welcome to our service!
✅ Notification sent: Welcome to our service!
🔔 Sending notification: Your account has been created.
✅ Notification sent: Your account has been created.
🔔 Sending notification: Your password has been changed.
✅ Notification sent: Your password has been changed.
{ count: 3 }
FAQs
A lightweight MongoDB-based job queue system
The npm package soft-queue receives a total of 0 weekly downloads. As such, soft-queue popularity was classified as not popular.
We found that soft-queue demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.

Security News
OpenSSF has issued a high-severity advisory warning open source developers of an active Slack-based campaign using impersonation to deliver malware.

Research
/Security News
Malicious packages published to npm, PyPI, Go Modules, crates.io, and Packagist impersonate developer tooling to fetch staged malware, steal credentials and wallets, and enable remote access.