【问题标题】:NodeJS @azure/service-bus: Any example to send message to deadletter manually?NodeJS @azure/service-bus:有任何手动向死信发送消息的示例吗?
【发布时间】:2021-02-04 00:55:52
【问题描述】:

我找不到任何手动向死信队列发送消息的示例。

let { ServiceBusClient, ReceiveMode } = require('@azure/service-bus'),
    serviceBusClient = ServiceBusClient.createFromConnectionString(SERVICE_BUS_SECRET),
    queueClient = serviceBusClient.createQueueClient(QUEUE),
    receiver = queueClient.createReceiver(ReceiveMode.peekLock);

const onMessageHandler = async (brokeredMessage) => {
    await brokeredMessage.deadletter({
        deadletterReason: 'testingReason', 
        deadLetterErrorDescription: 'testingDesc'
    });
};

const onErrorHandler = (error) => {
    console.log(error);
};

receiver.registerMessageHandler(onMessageHandler, onErrorHandler);

当我运行上面的代码时,出现deadletter() is not defined.之类的错误

【问题讨论】:

    标签: node.js azureservicebus servicebus dead-letter


    【解决方案1】:

    关于问题,请参考以下代码

    async function main() {
      const sbClient = ServiceBusClient.createFromConnectionString(
        connectionString
      );
      const queueClient = sbClient.createQueueClient(queueName);
    
      try {
        const receiver = queueClient.createReceiver(ReceiveMode.peekLock);
        const receiverPromise = new Promise((resolve, _reject) => {
          const onMessageHandler = async (brokeredMessage) => {
            console.log("Received message: ", brokeredMessage.messageId);
            await brokeredMessage.deadLetter({
              deadletterReason: "test",
              deadLetterErrorDescription: "test",
            });
    
            console.log(
              `send message  ${brokeredMessage.messageId} to dead letter queue successfully `
            );
          };
    
          const onErrorHandler = (err) => {
            if (err.retryable === true) {
              console.log(
                "Receiver will be recreated. A recoverable error occurred:",
                err
              );
              resolve();
            } else {
              console.log("Error occurred: ", err);
            }
          };
    
          receiver.registerMessageHandler(onMessageHandler, onErrorHandler, {
            autoComplete: false,
          });
        });
    
        await receiverPromise;
        await receiver.close();
        
      } finally {
        await queueClient.close();
        await sbClient.close();
      }
    }
    
    main().catch((err) => {
      console.log("Error occurred: ", err);
    });
    

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 1970-01-01
      • 2018-10-11
      • 2022-10-08
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多