@Override public Queue updateQueue(String queuePath, Queue queue) { queue.setPath(queuePath); UUID timestampUuid = newTimeUUID(); long timestamp = getTimestampInMicros(timestampUuid); Mutator<ByteBuffer> batch = createMutator(cass.getApplicationKeyspace(applicationId), be); addQueueToMutator(batch, queue, timestamp); try { batchUpdateQueuePropertiesIndexes( batch, queuePath, queue.getUuid(), queue.getProperties(), timestampUuid); } catch (Exception e) { logger.error("Unable to update queue", e); } batch.addInsertion( bytebuffer(queue.getUuid()), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_CREATED, timestamp / 1000, Long.MAX_VALUE - timestamp, se, le)); batch.addInsertion( bytebuffer(queue.getUuid()), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_MODIFIED, timestamp / 1000, timestamp, se, le)); batchExecute(batch, RETRY_COUNT); return queue; }
@Override public QueueSet unsubscribeFromQueues( String subscriberQueuePath, List<String> publisherQueuePaths) { subscriberQueuePath = normalizeQueuePath(subscriberQueuePath); UUID subscriberQueueId = getQueueId(subscriberQueuePath); UUID timestampUuid = newTimeUUID(); long timestamp = getTimestampInMicros(timestampUuid); Mutator<ByteBuffer> batch = createMutator(cass.getApplicationKeyspace(applicationId), be); QueueSet queues = new QueueSet(); for (String publisherQueuePath : publisherQueuePaths) { publisherQueuePath = normalizeQueuePath(publisherQueuePath); UUID publisherQueueId = getQueueId(publisherQueuePath); batchUnsubscribeFromQueue( batch, publisherQueuePath, publisherQueueId, subscriberQueuePath, subscriberQueueId, timestamp); try { Queue queue = getQueue(subscriberQueuePath, subscriberQueueId); batchUpdateQueuePropertiesIndexes( batch, publisherQueueId, subscriberQueuePath, subscriberQueueId, emptyMapWithKeys(queue.getProperties()), timestampUuid); } catch (Exception e) { logger.error("Unable to update index", e); } queues.addQueue(publisherQueuePath, publisherQueueId); } batchExecute(batch, RETRY_COUNT); return queues; }
@Override public QueueSet subscribeToQueue(String publisherQueuePath, String subscriberQueuePath) { publisherQueuePath = normalizeQueuePath(publisherQueuePath); UUID publisherQueueId = getQueueId(publisherQueuePath); subscriberQueuePath = normalizeQueuePath(subscriberQueuePath); UUID subscriberQueueId = getQueueId(subscriberQueuePath); UUID timestampUuid = newTimeUUID(); long timestamp = getTimestampInMicros(timestampUuid); Mutator<ByteBuffer> batch = createMutator(cass.getApplicationKeyspace(applicationId), be); batchSubscribeToQueue( batch, publisherQueuePath, publisherQueueId, subscriberQueuePath, subscriberQueueId, timestamp); try { Queue queue = getQueue(subscriberQueuePath, subscriberQueueId); if (queue != null) { batchUpdateQueuePropertiesIndexes( batch, publisherQueueId, subscriberQueuePath, subscriberQueueId, queue.getProperties(), timestampUuid); } } catch (Exception e) { logger.error("Unable to update index", e); } batchExecute(batch, RETRY_COUNT); return new QueueSet().addQueue(subscriberQueuePath, subscriberQueueId); }