Publish to a URL with a 3 second delay and headers/body
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publishJSON({
url: "https://my-api...",
body: { hello: "world" },
headers: { "test-header": "test-value" },
delay: 3,
});
Publish to a topic with a 3 second delay and headers/body
You can make a topic on the QStash console or using the topics API
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publishJSON({
topic: "mytopic",
body: { hello: "world" },
headers: { "test-header": "test-value" },
delay: 3,
});
console.log(res[0].messageId);
Publish a method with a callback URL
Callbacks are useful for long running functions. Here, QStash will return the response
of the publish request to the callback URL.
We also change the method
to GET
in this use case so QStash will make a GET
request to the url
. The default
is POST
.
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publishJSON({
url: "https://my-api...",
body: { hello: "world" },
callback: "https://my-callback...",
failureCallback: "https://my-failure-callback...",
method: "GET",
});
The max number of retries is based on your QStash plan
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publishJSON({
url: "https://my-api...",
body: { hello: "world" },
retries: 1,
});
Publish HTML content instead of JSON
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publish({
url: "https://my-api...",
body: "<html><body><h1>Hello World</h1></body></html>",
headers: {
"Content-Type": "text/html",
},
});
import { Client } from "@upstash/qstash";
const client = new Client({ token: "<QSTASH_TOKEN>" });
const res = await client.publishJSON({
url: "https://my-api...",
body: { hello: "world" },
contentBasedDeduplication: true,
});