Как я решил проблему.
Я добавил дополнительную очередь и логику для разделения сообщений между двумя очередями. Затем я создал новый экземпляр функции (1 и 2), которая указала на вторую очередь. Я изначально думал, что очереди работают, позволяя снять только одну копию сообщения. Тогда никакой другой сервис не сможет прочитать это сообщение. Похоже, что это не так с моим тестированием.
Выполнение двух функций, каждая с максимальным количеством партий, решило проблему. Это шаблон, который я могу продолжать, пока мы не сможем эффективно рассмотреть дополнительные улучшения кода. Но нашей бутылочной горловиной являются экземпляры httpclient (я не могу запустить их как статические и потребует значительных изменений) и некоторые вызовы БД, которые можно оптимизировать.
Если у кого-то есть другое предложение, добавьте его.
Когда выйдет премиум-план, я попробую, но до тех пор мне придется придерживаться этого решения.