I am developing a node.js app. In my app, I need to send blast emails and SMS to users satisfying a particular criteria. I use Gmail SMTP for emails and a third party vendor for SMS. I'm assuming firing the API's for email and sms services in a loop is dangerous. What's the right way do it?
Email and SMS queuing in NodeJS
2.8k views Asked by Jaseem Abbas At
2
There are 2 answers
2

You can use kue npm library for creating queue of your email or sms tasks it runs parallels. https://medium.com/@techsuneel99/how-to-send-50000-emails-at-once-in-queue-node-js-b633ef9b3b30
Related Questions in NODE.JS
- How do I configure Serverless Framework for dotenv in a monorepo for specific sub-folders?
- Build using workspace is not correctly handling "extends" on tsconfig file
- How do I properly structure, configure, and bundle shared code in a Typescript AWS stack monorepo?
- Lerna is inconsistent when watching detection of changes
- install npm workspace dependencies completely inside workspace
- Do NPM workspaces make sense for server-side project where all the dependencies needs to be released using CI alongside the server code
- MUI Icons used in shared React component library won't render: Error: Element type is invalid: expected a string or a class/function but got: object
- "Error: Invalid hook call." when importing React component from shared component library in monorepo (turborepo & npm workspaces)
- NPM Workspaces Typescript unable to find local modules
- How to symlink a package in workspace without updating yarn.lock?
Related Questions in EMAIL
- How do I configure Serverless Framework for dotenv in a monorepo for specific sub-folders?
- Build using workspace is not correctly handling "extends" on tsconfig file
- How do I properly structure, configure, and bundle shared code in a Typescript AWS stack monorepo?
- Lerna is inconsistent when watching detection of changes
- install npm workspace dependencies completely inside workspace
- Do NPM workspaces make sense for server-side project where all the dependencies needs to be released using CI alongside the server code
- MUI Icons used in shared React component library won't render: Error: Element type is invalid: expected a string or a class/function but got: object
- "Error: Invalid hook call." when importing React component from shared component library in monorepo (turborepo & npm workspaces)
- NPM Workspaces Typescript unable to find local modules
- How to symlink a package in workspace without updating yarn.lock?
Related Questions in SMTP
- How do I configure Serverless Framework for dotenv in a monorepo for specific sub-folders?
- Build using workspace is not correctly handling "extends" on tsconfig file
- How do I properly structure, configure, and bundle shared code in a Typescript AWS stack monorepo?
- Lerna is inconsistent when watching detection of changes
- install npm workspace dependencies completely inside workspace
- Do NPM workspaces make sense for server-side project where all the dependencies needs to be released using CI alongside the server code
- MUI Icons used in shared React component library won't render: Error: Element type is invalid: expected a string or a class/function but got: object
- "Error: Invalid hook call." when importing React component from shared component library in monorepo (turborepo & npm workspaces)
- NPM Workspaces Typescript unable to find local modules
- How to symlink a package in workspace without updating yarn.lock?
Related Questions in SMS-GATEWAY
- How do I configure Serverless Framework for dotenv in a monorepo for specific sub-folders?
- Build using workspace is not correctly handling "extends" on tsconfig file
- How do I properly structure, configure, and bundle shared code in a Typescript AWS stack monorepo?
- Lerna is inconsistent when watching detection of changes
- install npm workspace dependencies completely inside workspace
- Do NPM workspaces make sense for server-side project where all the dependencies needs to be released using CI alongside the server code
- MUI Icons used in shared React component library won't render: Error: Element type is invalid: expected a string or a class/function but got: object
- "Error: Invalid hook call." when importing React component from shared component library in monorepo (turborepo & npm workspaces)
- NPM Workspaces Typescript unable to find local modules
- How to symlink a package in workspace without updating yarn.lock?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The time spent is obviously proportional to N, being N the size of your set. As much users you have, longer it takes. Keep in mind that requests over the network are not blocking in any case.
Anyway, unless it risks N to be thousands or millions of items, you can do it in a loop and attach a proper callback to handle responses/errors.
Otherwise, you can send an email/sms and schedule the same operation for the next element using
nextTick
(see nodejs documentation for further details). This way you'll spread all the activities over several iterations of the event loop.