@Override public QueueSet getSubscribers( String publisherQueuePath, String firstSubscriberQueuePath, int limit) { UUID publisherQueueId = getQueueId(publisherQueuePath); Keyspace ko = cass.getApplicationKeyspace(applicationId); if (firstSubscriberQueuePath != null) { limit += 1; } List<HColumn<String, UUID>> columns = createSliceQuery(ko, ue, se, ue) .setKey(publisherQueueId) .setColumnFamily(QUEUE_SUBSCRIBERS.getColumnFamily()) .setRange(normalizeQueuePath(firstSubscriberQueuePath), null, false, limit + 1) .execute() .get() .getColumns(); QueueSet queues = new QueueSet(); int count = Math.min(limit, columns.size()); if (columns != null) { for (int i = firstSubscriberQueuePath != null ? 1 : 0; i < count; i++) { HColumn<String, UUID> column = columns.get(i); queues.addQueue(column.getName(), column.getValue()); } } if (columns.size() > limit) { queues.setMore(true); } return queues; }
public void batchSubscribeToQueue( Mutator<ByteBuffer> batch, String publisherQueuePath, UUID publisherQueueId, String subscriberQueuePath, UUID subscriberQueueId, long timestamp) { batch.addInsertion( bytebuffer(publisherQueueId), QUEUE_SUBSCRIBERS.getColumnFamily(), createColumn(subscriberQueuePath, subscriberQueueId, timestamp, se, ue)); batch.addInsertion( bytebuffer(subscriberQueueId), QUEUE_SUBSCRIPTIONS.getColumnFamily(), createColumn(publisherQueuePath, publisherQueueId, timestamp, se, ue)); }
public void batchUnsubscribeFromQueue( Mutator<ByteBuffer> batch, String publisherQueuePath, UUID publisherQueueId, String subscriberQueuePath, UUID subscriberQueueId, long timestamp) { batch.addDeletion( bytebuffer(publisherQueueId), QUEUE_SUBSCRIBERS.getColumnFamily(), subscriberQueuePath, se, timestamp); batch.addDeletion( bytebuffer(subscriberQueueId), QUEUE_SUBSCRIPTIONS.getColumnFamily(), publisherQueuePath, se, timestamp); }
public Message batchPostToQueue( Mutator<ByteBuffer> batch, String queuePath, Message message, MessageIndexUpdate indexUpdate, long timestamp) { queuePath = normalizeQueuePath(queuePath); UUID queueId = getQueueId(queuePath); message.sync(); addMessageToMutator(batch, message, timestamp); long shard_ts = roundLong(message.getTimestamp(), QUEUE_SHARD_INTERVAL); logger.debug("Adding message with id '{}' to queue '{}'", message.getUuid(), queueId); batch.addInsertion( getQueueShardRowKey(queueId, shard_ts), QUEUE_INBOX.getColumnFamily(), createColumn(message.getUuid(), ByteBuffer.allocate(0), timestamp, ue, be)); long oldest_ts = Long.MAX_VALUE - getTimestampInMicros(message.getUuid()); batch.addInsertion( bytebuffer(queueId), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_OLDEST, message.getUuid(), oldest_ts, se, ue)); long newest_ts = getTimestampInMicros(message.getUuid()); batch.addInsertion( bytebuffer(queueId), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_NEWEST, message.getUuid(), newest_ts, se, ue)); batch.addInsertion( bytebuffer(getQueueId("/")), QUEUE_SUBSCRIBERS.getColumnFamily(), createColumn(queuePath, queueId, timestamp, se, ue)); counterUtils.batchIncrementQueueCounter( batch, getQueueId("/"), queuePath, 1L, timestamp, applicationId); if (indexUpdate == null) { indexUpdate = new MessageIndexUpdate(message); } indexUpdate.addToMutation(batch, queueId, shard_ts, timestamp); counterUtils.addMessageCounterMutations(batch, applicationId, queueId, message, timestamp); batch.addInsertion( bytebuffer(queueId), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_CREATED, timestamp / 1000, Long.MAX_VALUE - timestamp, se, le)); batch.addInsertion( bytebuffer(queueId), QUEUE_PROPERTIES.getColumnFamily(), createColumn(QUEUE_MODIFIED, timestamp / 1000, timestamp, se, le)); return message; }