MeowWolf / node-red-contrib-amqp

AMQP nodes for node-red
22 stars 18 forks source link

Does this library support nacks? #25

Closed sebascarra closed 3 years ago

sebascarra commented 4 years ago

Hi, I have found your library and I understand how to make manual ACKs: just use a amp-in manual-ack node, then after processing just inject the processed message to the manual-ack node. But is it possible to send a nack instead? Thanks.

amodelbello commented 3 years ago

Currently there is no support for sending nacks in this way. It's a good idea and would be nice to add in a future release. Unfortunately I'm unable to build new features at the moment. I generally only work on this repo if we, as an organization need a new feature or are experiencing a bug with it. Typically you'll see sporadic flurries of activity followed by long periods of dormancy. Pull requests are always welcome however if there's something you'd like to build in.

UNOPARATOR commented 3 years ago

@sebascarra just add a function node and create an exception ;) this way the message will be NACKed. But be careful you may end up re-consuming the same message again and again and again and again and ... ;)

If you don't want to retry the message until it succeeds, you can ACK (message.queue) the message but also send it to another _(message.queueerror) queue instead.

pauldeng commented 3 years ago

Hi all,

I implemented the nack feature. Currently, it sits in my fork.

I am new to this, but I manage to get it to work :). I need your help to do a code review and properly test it.

Quick Start

  1. Configure RabbitMQ with following
    {
    "rabbit_version": "3.9.3",
    "rabbitmq_version": "3.9.3",
    "product_name": "RabbitMQ",
    "product_version": "3.9.3",
    "users": [],
    "vhosts": [],
    "permissions": [],
    "topic_permissions": [],
    "parameters": [],
    "global_parameters": [],
    "policies": [],
    "queues": [
    {
      "name": "test-direct-queue",
      "vhost": "/",
      "durable": true,
      "auto_delete": false,
      "arguments": {
        "x-queue-type": "classic"
      }
    }
    ],
    "exchanges": [
    {
      "name": "test-direct-exchange",
      "vhost": "/",
      "type": "direct",
      "durable": true,
      "auto_delete": false,
      "internal": false,
      "arguments": {}
    }
    ],
    "bindings": [
    {
      "source": "test-direct-exchange",
      "vhost": "/",
      "destination": "test-direct-queue",
      "destination_type": "queue",
      "routing_key": "",
      "arguments": {}
    }
    ]
    }
  2. Clone, build and install my fork
    git clone https://github.com/pauldeng/node-red-contrib-amqp.git
    cd node-red-contrib-amqp
    npm install
    npm run build
    cd ~/.node-red/
    npm i ~/node-red-contrib-amqp/
  3. Start Node-Red and load the example "Manual NAck With Links.json" Hamburger Button --> Import --> Examples

Thanks for your time and efforts.

Cheers, Paul

amodelbello commented 3 years ago

Paul, This is some solid work here and is a feature that is sorely lacking from the node. Thanks a lot for the work! I’m going to spend some time on this tomorrow. Would you mind creating a pull request? I want to refactor your changes a little bit if that’s okay. I will need to add some unit tests for the new methods you added as well.

Thanks! Amo

On Aug 17, 2021, at 5:15 AM, Paul Peng Deng @.***> wrote:

 Hi all,

I implemented the nack feature. Currently, it sits in my fork.

I am new to this, but I manage to get it to work :). I need your help to do a code review and properly test it.

Quick Start

Configure RabbitMQ with following { "rabbit_version": "3.9.3", "rabbitmq_version": "3.9.3", "product_name": "RabbitMQ", "product_version": "3.9.3", "users": [], "vhosts": [], "permissions": [], "topic_permissions": [], "parameters": [], "global_parameters": [], "policies": [], "queues": [ { "name": "test-direct-queue", "vhost": "/", "durable": true, "auto_delete": false, "arguments": { "x-queue-type": "classic" } } ], "exchanges": [ { "name": "test-direct-exchange", "vhost": "/", "type": "direct", "durable": true, "auto_delete": false, "internal": false, "arguments": {} } ], "bindings": [ { "source": "test-direct-exchange", "vhost": "/", "destination": "test-direct-queue", "destination_type": "queue", "routing_key": "", "arguments": {} } ] } Clone, build and install my fork git clone https://github.com/pauldeng/node-red-contrib-amqp.git cd node-red-contrib-amqp npm install npm run build cd ~/.node-red/ npm i ~/node-red-contrib-amqp/ Start Node-Red and load the example "Manual NAck With Links.json" Hamburger Button --> Import --> Examples Thanks for your time and efforts.

Cheers, Paul

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

pauldeng commented 3 years ago

Absolutely, will do sir.

Just make sure we have enough test before release.