public void batchUpdateQueuePropertiesIndexes( Mutator<ByteBuffer> batch, String subscriberQueuePath, UUID subscriberQueueId, Map<String, Object> properties, UUID timestampUuid) throws Exception { QueueSet subscriptions = getSubscriptions(subscriberQueuePath, null, ALL_COUNT); if (subscriptions != null) { for (Map.Entry<String, Object> property : properties.entrySet()) { if (!Queue.QUEUE_PROPERTIES.containsKey(property.getKey())) { QueueIndexUpdate indexUpdate = batchStartQueueIndexUpdate( batch, subscriberQueuePath, subscriberQueueId, property.getKey(), property.getValue(), timestampUuid); for (QueueInfo subscription : subscriptions.getQueues()) { batchUpdateQueueIndex(indexUpdate, subscription.getUuid()); } } } } }
@Override public Message postToQueue(String queuePath, Message message) { long timestamp = cass.createTimestamp(); Mutator<ByteBuffer> batch = createMutator(cass.getApplicationKeyspace(applicationId), be); queuePath = normalizeQueuePath(queuePath); MessageIndexUpdate indexUpdate = new MessageIndexUpdate(message); batchPostToQueue(batch, queuePath, message, indexUpdate, timestamp); batchExecute(batch, RETRY_COUNT); String firstSubscriberQueuePath = null; while (true) { QueueSet subscribers = getSubscribers(queuePath, firstSubscriberQueuePath, 1000); if (subscribers.getQueues().isEmpty()) { break; } batch = createMutator(cass.getApplicationKeyspace(applicationId), be); for (QueueInfo q : subscribers.getQueues()) { batchPostToQueue(batch, q.getPath(), message, indexUpdate, timestamp); firstSubscriberQueuePath = q.getPath(); } batchExecute(batch, RETRY_COUNT); if (!subscribers.hasMore()) { break; } } return message; }