간단한 작업 대기열을 갖고 싶습니다. 여러 컴퓨터에서 실행되는 여러 소비자가 있지만 각 작업을 한 번만 소비해야합니다.Google PubSub을 사용하는 작업 대기열
동일한 구독 ID를 사용하는 주제에서 여러 명의 구독자가있을 경우 메시지가 두 번 읽힐 가능성이 있습니까? 나는이 라인을 따라 무언가를 성공적으로 테스트했지만 동기화 문제가있을 수 있다고 우려하고 있습니다. GCP의 약속에-최소 한 번 배달 : 짧은에서
client = SubscriberClient.create(SubscriberSettings.defaultBuilder().build());
subName = SubscriptionName.create(projectId, "Queue");
client.createSubscription(subName, topicName, PushConfig.getDefaultInstance(), 0);
Thread subscriber = new Thread() {
public void run() {
while (!interrupted()) {
PullResponse response = subscriberClient.pull(subscriptionName, false, 1);
List<ReceivedMessage> messages = response.getReceivedMessagesList();
mess = messasges.get(0);
client.acknowledge(subscriptionName, ImmutableList.of(mess.getAckId()));
doSomethingWith(mess.getMessage().getData().toStringUtf8());
}
}
};
subscriber.start();