0
我想要一個簡單的任務隊列。將有多個使用者在不同的機器上運行,但我只希望每個任務消耗一次。使用Google PubSub的作業隊列
如果我有多個訂閱者使用同一個訂閱ID從一個主題中獲取消息,那麼這個消息是否會被讀取兩次? 我已經沿着這些線測試了一些東西,但我擔心可能會出現同步問題。
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();