node-red / node-red-nodes

Extra nodes for Node-RED
Other
988 stars 593 forks source link

node-red-node-stomp - support heartbeats and ack\nack #143

Closed ozomer closed 1 year ago

ozomer commented 8 years ago

My suggestion is to switch from stomp-client to Stompit that supports heartbeats. It is also important to be able to set the "ack" subscriber header. If the "ack" header is set from "auto" to "client" or to "client-individual", there should also be a choice whether to call the ack automatically in the "stomp-in" node, or pass it on under msg.ack and msg.nack.

We had a bad experience while working with CloudAMQP (not their fault). Our server crashed and restarted, and created a new subscriber connection. The old connection was not removed because it did not disconnect gracefully and there were no heartbeats. The broker kept sending half of the messages to the old connection (we are working with a queue). By the time we figured that out there was no way to restore these messages because the "ack" header was not configured (default is "auto"). It took some time to notice the problem because ~half of the messages did reach their destination (the new connection).

This issue is urgent on our platform, so I am probably going to publish node-red-contrib-stompit in a week. I am posting this issue just for the record, in case someone else is already working on the same thing.

knolleary commented 8 years ago

Why not contribute a PR to migrate this node rather than jump to creating your own?

ozomer commented 8 years ago

I do not understand the difference between an issue and a PR. I think it should be a completely new node because it wraps a completely different package. I don't want to take responsibility on backward-compatibility.

knolleary commented 8 years ago

It might wrap a different underlying package, but the externals of the node could be kept the same, with the additional features you're looking for. There's no need for it to be a new node.

If you were going to be writing the code anyway, for a small additional effort of using the existing node externals as a starting point, you could then contribute it back to the project.

My concern is that our time is limited and we'd be unlikely to look at this issue for a while - if youve got an immediate need for it to be tackled, and you've got the ability to do so, the project would certain welcome your contribution.