I'm using combination of 'createrawtransaction' and 'fundrawtransaction' API calls to create my transactions. I don't pass 'feeRate' option to 'fundrawtransaction' and rely on bitcoin wallet to figure out the fee. Is this a good strategy for mission critical system like payment system or I have to manually estimate transaction fees and not rely on functionality provided by bitcoin core?
As far as I understand if fee is too low for a network conditions then transaction may stuck in the mempool of some nodes. Even worse it may be expelled from some nodes while still remain in others. Is there any way to cancel such transaction and make sure no miner will ever pick it up? If not then what are my options when dealing with stuck transactions?