The queues disable themselves as a reaction to poison message handling protection. It means that your activated procedure is rolling back, probably due to some exception. Activated procedure do not have a session to send errors to, so they send it to ERRORLOG instead. Check your errorlog, should be riddled with error messages from your activated procedures.
The easiest way to troubleshoot is to simply run the activated procedure manually, from SSMS, when the activation is OFF. Try to recreate the same execution context as activation, see Internal Activation Context. The critical part is the EXECUTE AS context which is changing a lot of behavior, especially security. So try this (assuming your queue executes under dbo
):
use <dbname>;
go
execute as user = 'dbo';
go
exec <sp_my_activated_proc>;
go
revert;
go
You will likely get an error message which is probably the cause of your repeated disables.