我有一个蔚蓝的函数,在回调函数中它接收到来自主题的消息,有时当函数无法处理消息,然后从这个节点js代码中,我想将该消息放在死信队列中,稍后可以手动处理,我试着查看文档,我只找到了一些示例,在从服务总线对象接收消息时读取死信并将其放入死信中,在我的情况下,这是回调方法,因此我不需要创建服务总线对象,在回调函数中,我是否可以在死信中放一条消息?
我在用
@azure/service-bus:"7.0.3“
我在跟踪这份文件
https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/servicebus/service-bus/
我的function.json是:
{
"bindings": [
{
"name": "sbMessage",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "dummy-topic-name",
"subscriptionName": "dummy_subscription",
"connection": "AzureWebJobsServiceBus"
}
]
}在这个自述文档中,它有一个从死信中读取的示例:
https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/servicebus/service-bus/samples/typescript/src/advanced/movingMessagesToDLQ.ts我在这回电话里收到了消息:
样本代码:
module.exports = async function (context, sbMessage) {
context.log('ServiceBus message', sbMessage);}发布于 2021-04-09 15:04:19
从节点js函数抛出异常将消息置于死信队列中。
发布于 2021-03-01 04:17:23
我认为,如果不建立基于服务总线的客户端(至少就NodeJs而言),就不可能将信息直接发送到死信中。请检查基于NodeJS的触发器:
您会发现根本没有相应的用法(如果您基于C#,它是可能的)。
您可以尝试创建服务总线客户端并使用deadLetterMessage。
任何_
发布于 2021-04-21 06:55:24
我也在做Azure公共汽车服务。
任何_
关于如何将消息传递给DLQ的参考可以在上面的链接中找到。
基本上,您需要在您创建的deadLetterMessage方法上调用Receiver方法。
const connectionString = process.env.SERVICEBUS_CONNECTION_STRING || "<connection string>";
const queueName = process.env.QUEUE_NAME || "<queue name>";
const sbClient = new ServiceBusClient(connectionString);
const receiver = sbClient.createReceiver(queueName);
await receiver.deadLetterMessage(messages[0], {
deadLetterReason: "Incorrect Recipe type",
deadLetterErrorDescription: "Recipe type does not match preferences."
});在此基础上,您可以禁用autoCompleteMessages,以完全控制您想要完成或丢弃或将消息移动到DLQ的方式。
https://stackoverflow.com/questions/66411568
复制相似问题