Niurmiguel / nestjs-service-bus

NestJs custom transport for Azure Service Bus.
MIT License
20 stars 7 forks source link

How to handle errors? #186

Closed lucasramosdev closed 4 months ago

lucasramosdev commented 5 months ago

I want to retry messages with error, i throw the error but the message dont retry

[Nest] 4716  - 10/04/2024, 11:59:25   ERROR [RpcExceptionsHandler] Test Error
Error: Test Error
    at InvoiceController.getMessage (C:\applications\invoices-receipt\src\invoice\invoice.controller.ts:21:11)
    at C:\applications\invoices-receipt\node_modules\@nestjs\microservices\context\rpc-context-creator.js:44:33
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at C:\applications\invoices-receipt\node_modules\@nestjs\microservices\context\rpc-proxy.js:11:32
    at AzureServiceBusServer.handleEvent (C:\applications\invoices-receipt\node_modules\@nestjs\microservices\server\server.js:71:32)
    at Object.processMessage (C:\applications\invoices-receipt\node_modules\@niur\nestjs-service-bus\lib\server\azure-service-bus.server.ts:77:7)   
    at Object.withSpan (C:\applications\invoices-receipt\node_modules\@azure\core-tracing\src\tracingClient.ts:70:22)
    at Object.processMessage (C:\applications\invoices-receipt\node_modules\@azure\service-bus\src\core\streamingReceiver.ts:502:11)
    at StreamingReceiver._onAmqpMessage (C:\applications\invoices-receipt\node_modules\@azure\service-bus\src\core\streamingReceiver.ts:273:9)
  @Subscription({
    topic: "queue",
    subscription: "",
    receiveMode: "peekLock"
  })
  getMessage(@Payload() message: ServiceBusMessage) {
    console.log(message.body);
    throw new Error("Test Error");
  }
Niurmiguel commented 5 months ago

@lucasramosdev The Service Bus retry mechanism is for transient errors like network connection issues. It is not for user errors.

You will have to perform your own try/catch/retry on callbacks if you need to retry when your code fails.