Я пытаюсь заставить Cloud Run или Cloud Function запускать и извлекать сообщения, соответствующие определенному идентификатору, например, если сообщение с идентификатором атрибута 1 помещено в тему, Cloud Run с идентификатором 1 удалит его, важно, чтобы все сообщения с атрибутом 1 отправлялись в один и тот же экземпляр.
Я понимаю, что могу использовать фильтры для подписок, но я хотел бы иметь возможность легко изменить количество возможных идентификаторов, например. Если бы я помещал сообщения в тему только с идентификатором от 0 до 4, то было бы запущено только пять экземпляров.
Как бы я начал создавать что-то подобное? Поддерживает ли Pub/Sub такую функциональность?
Я знаю, что могу создать X тем, а затем поместить каждое сообщение в свою собственную тему, но это кажется неэффективным способом выполнения этого, когда есть система атрибутов.
Также то, что вы описываете, звучит не так, как вы создаете функции/службы CR на основе сообщений (как вы пишете в заголовке), а обрабатываете их в уже созданных службах. Вы можете это прояснить?
Ах, возможно, я плохо сформулировал это, я хочу не более одного контейнера для каждого атрибута сообщения. Я полагаю, вы правы, что вместо этого я бы хотел, чтобы Cloud Run опрашивал сабвуфер паба и извлекал из него любые данные, доступные для них. Например, как будет работать SQS AWS. Моя основная проблема заключается в том, чтобы запустить экземпляр облачного запуска, когда есть сообщение с атрибутом, которому еще не назначен работающий контейнер...
Вы нашли решение? если да, можете ли вы поделиться решением?
@RoopaM вроде как, я нашел другой способ сделать это, который работал в моей ситуации.
Это было невозможно, вместо этого мне пришлось ждать, пока все данные для нужной функции будут готовы, прежде чем запускать функцию, я не мог постоянно опрашивать и получать правильные данные.
Поэтому лучшим подходом было поместить данные в firestore, а затем, когда все данные были готовы для обработки на следующем уровне, я помещал сообщение в подпубликацию, содержащую идентификатор сообщения, этот идентификатор сообщения определял данные. которые будет обрабатывать эта функция.
Затем функция будет запрашивать у firestore сообщения со свойством, которое включает в себя идентификатор сообщения, который ей был предоставлен.
Я не мог найти других подходов к работе, которые давали бы мне желаемый результат.
Вы не можете указать в Pub/Sub, на какую конечную точку отправлять сообщение на основе атрибута. Вам может понадобиться услуга между CR и Pub/Sub в качестве «маршрутизатора».
it's important that all messages with attribute 1 go to the same instance
что вы называете экземпляром Cloud Run? Вы имеете в виду обслуживание? Если вы на самом деле имеете в виду экземпляр, работающий в Cloud Run, вы не можете перенаправлять сообщения в определенные экземпляры.