【发布时间】:2017-03-24 17:35:14
【问题描述】:
我想要一个简单的任务队列。会有多个消费者在不同的机器上运行,但我只希望每个任务被消费一次。
如果我有多个订阅者使用相同的订阅 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();
【问题讨论】: