Danila is above is right Solutions that tell you to do cron_run = 'false" will disable other queues you do want, like bulk attribute update or export file generation.
Option 1 disable packages
php bin/magento module:disable Magento_WebapiAsync
php bin/magento module:disable Magento_Amqp
I think it makes sense to disable both as the absence of Ampq allows modules to switch to mysql - but I haven't dug deep into that. Indeed if all you want is for the error message to vanish then Danila's option is all you need
Option 2 Tweak your queue cron, dont disable it
This is if you don't want to or can't take core modules off.
List your existing queues
bin/magento queue:consumers:list
Add all of them except async to your cron consumer, in env.php. If there is functionality you never use, skip that one (but remember you did...)
'queue' => [
'consumers_wait_for_messages' => 0,
],
'cron_consumers_runner' => [
'cron_run' => true,
'max_messages' => 2,
'single_thread' => true,
'consumers_wait_for_messages' => 0,
'consumers' => [
'product_action_attribute.update',
'product_action_attribute.website.update',
'exportProcessor',
'inventory.source.items.cleanup',
'inventory.mass.update',
'inventory.reservations.cleanup',
'inventory.reservations.update'
]
],
Most places have a higher max_messages but if you are not having rabbitmq you are possibly on a low budget host too and short queues more often are better. Up the number as you want.
Option 3 - take things out of Magento's cron and add them manually, queue per queue, to the host system cron
this implies
cron_run => false
and then putting things like bin/magento queue:consumers:start --single-thread --max-messages=20 inventory.source.items.cleanup
in your cron (or running them manually if you do it rarely. If you have a shared server 'consumers_wait_for_messages' => 0
or consumers-wait-for-messages=1 is key for memory management