首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从节点js客户端将消息放入蔚蓝服务总线中的死信队列中

从节点js客户端将消息放入蔚蓝服务总线中的死信队列中
EN

Stack Overflow用户
提问于 2021-02-28 16:56:55
回答 5查看 1.3K关注 0票数 0

我有一个蔚蓝的函数,在回调函数中它接收到来自主题的消息,有时当函数无法处理消息,然后从这个节点js代码中,我想将该消息放在死信队列中,稍后可以手动处理,我试着查看文档,我只找到了一些示例,在从服务总线对象接收消息时读取死信并将其放入死信中,在我的情况下,这是回调方法,因此我不需要创建服务总线对象,在回调函数中,我是否可以在死信中放一条消息?

我在用

@azure/service-bus:"7.0.3“

我在跟踪这份文件

https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/servicebus/service-bus/

我的function.json是:

代码语言:javascript
复制
{
  "bindings": [
    {
      "name": "sbMessage",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "dummy-topic-name",
      "subscriptionName": "dummy_subscription",
      "connection": "AzureWebJobsServiceBus"
    }
  ]
}

在这个自述文档中,它有一个从死信中读取的示例:

代码语言:javascript
复制
https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/servicebus/service-bus/samples/typescript/src/advanced/movingMessagesToDLQ.ts

我在这回电话里收到了消息:

样本代码:

代码语言:javascript
复制
module.exports = async function (context, sbMessage) {
    context.log('ServiceBus  message', sbMessage);}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-04-09 15:04:19

从节点js函数抛出异常将消息置于死信队列中。

票数 1
EN

Stack Overflow用户

发布于 2021-03-01 04:17:23

我认为,如果不建立基于服务总线的客户端(至少就NodeJs而言),就不可能将信息直接发送到死信中。请检查基于NodeJS的触发器:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=javascript#usage

您会发现根本没有相应的用法(如果您基于C#,它是可能的)。

您可以尝试创建服务总线客户端并使用deadLetterMessage

任何_

票数 0
EN

Stack Overflow用户

发布于 2021-04-21 06:55:24

我也在做Azure公共汽车服务。

任何_

关于如何将消息传递给DLQ的参考可以在上面的链接中找到。

基本上,您需要在您创建的deadLetterMessage方法上调用Receiver方法。

https://github.com/Azure/azure-sdk-for-js/blob/da8d311b88dff7e93fd1835f0bf034055a8a0b2a/sdk/servicebus/service-bus/samples/javascript/advanced/movingMessagesToDLQ.js#L61-L64

代码语言:javascript
复制
    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的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66411568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档