Local Development - SDK & NGROK
If you use our SDK for interacting with ServerlessQ you will quickly see that it is required to have a deployed webhook URL. Especially for the start of a new project this is often not the case.
To overcome this issue you need to route your webhook requests to your local machine. Since ServerlessQ runs in the cloud it is necessary to route requests to your machine.
This is easily possible with ngrok. With ngrok you launch a tunnel between a webhook URL they provide and your local machine.
Sign up for Ngrok
Go to the ngrok dashboard and create an account.
Install & Configure Ngrok CLI
After that you will be promted to install the CLI.
On Mac you can simply install it with homebrew
brew install --cask ngrok
After that you need to add your authentication token
ngrok config add-authtoken XXX
All of this will be shown to you after you sign up for an account.
Start Agent on your machine
Now you can start an agent on your machine. Simply enter the following command
ngrok http 3000
3000 is the port your application runs on. You need to change it in case you're using another port!
Get Ngrok URL
Head over to your Ngrok Dashboard -> Tunnels -> Agents

You will now see your agent running.
By clicking on the agent you can find your webhook URL. All calls to this URL will go to your local machine.

Define Consumer API
If you create your Queue you can define an URL that should be called in case your system runs not on Vercel. The SDK checks the environment variable VERCEL
for that.
You can simply pass your ngrok URL to the queue option urlToOverrideWhenRunningLocalhost
and append your path to the Queue, for examlpe api/queue
.
Here an example:
// pages/api/queue
export default Queue(
"SendNewsletter" // Name of the queue,
"api/queue" // Path to this queue,
async (req, res) => { // Handler function. This will be executed once you enqueue a job.
const result = await doSomethingImportant();
console.log("Queue Job", result);
res.send("finished");
},
{ retries: 1,
urlToOverrideWhenRunningLocalhost: "https://abc.ngrok.io/api/queue" } // Additional optional options
);