AzureStorageUtils.setProxy(operationContext, context); cloudQueue.addMessage(message, ttl, delay, null, operationContext); } catch (URISyntaxException | StorageException e) { getLogger().error("Failed to write the message to Azure Queue Storage due to {}", new Object[]{e}); session.getProvenanceReporter().send(flowFile, cloudQueue.getUri().toString(), transmissionMillis);
AzureStorageUtils.setProxy(operationContext, context); retrievedMessagesIterable = cloudQueue.retrieveMessages(batchSize, visibilityTimeoutInSecs, null, operationContext); } catch (URISyntaxException | StorageException e) { getLogger().error("Failed to retrieve messages from the provided Azure Storage Queue due to {}", new Object[] {e}); attributes.put("azure.queue.uri", cloudQueue.getUri().toString()); attributes.put("azure.queue.insertionTime", message.getInsertionTime().toString()); attributes.put("azure.queue.expirationTime", message.getExpirationTime().toString()); session.getProvenanceReporter().receive(flowFile, cloudQueue.getStorageUri().toString()); cloudQueue.deleteMessage(message); } catch (StorageException e) { getLogger().error("Failed to delete the retrieved message with the id {} from the queue due to {}",
@Override public long getLength() { try { // Download the approximate message count from the server. _queue.downloadAttributes(); // Retrieve the newly cached approximate message count. return _queue.getApproximateMessageCount(); } catch (Exception e) { e.printStackTrace(); return -1; } }
assertFalse(queue.exists()); URI sasUri = sasClient.getQueueReference(queue.getName()).getUri(); sasUri = sasClient.getCredentials().transformUri(sasUri); final CloudQueue sasQueue = new CloudQueue(sasUri); sasQueue.create(); sasQueue.create(); fail(); queue.create(); queue.setMetadata(new HashMap<String, String>()); queue.getMetadata().put(key, Constants.ID); queue.uploadMetadata(); sasQueue.setMetadata(new HashMap<String, String>()); if (policy.getPermissions().contains(SharedAccessAccountPermissions.WRITE)) { sasQueue.getMetadata().put(key, value); sasQueue.uploadMetadata(); sasQueue.getMetadata().put(key, value); sasQueue.uploadMetadata(); fail(); queue.getMetadata().put(key, value); queue.uploadMetadata();
queue.createIfNotExists(); queue.addMessage(message1); queue.addMessage(message2); queue.addMessage(message3); queue.addMessage(message4); queue.addMessage(message5); CloudQueueMessage peekedMessage = queue.peekMessage(); act.outputText( view, CloudQueueMessage updateMessage = queue.retrieveMessage(); updateMessage.setMessageContent("Updated contents."); EnumSet<MessageUpdateFields> updateFields = EnumSet .of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY); queue.updateMessage(updateMessage, 0, updateFields, null, null); queue.retrieveMessages(3, 1, null, null); while ((retrievedMessage = queue.retrieveMessage(30, null /* options */, null /* opContext */)) != null) { queue.deleteMessage(retrievedMessage);
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testUploadMetadata() throws URISyntaxException, StorageException { CloudQueue queueForGet = this.queue.getServiceClient().getQueueReference(this.queue.getName()); HashMap<String, String> metadata1 = new HashMap<String, String>(); metadata1.put("ExistingMetadata1", "ExistingMetadataValue1"); this.queue.setMetadata(metadata1); queueForGet.downloadAttributes(); assertFalse(queueForGet.getMetadata().containsKey("ExistingMetadata1")); this.queue.uploadMetadata(); queueForGet.downloadAttributes(); assertTrue(queueForGet.getMetadata().containsKey("ExistingMetadata1")); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class, SlowTests.class }) public void testAddMessageWithVisibilityTimeout() throws StorageException, InterruptedException { this.queue.addMessage(new CloudQueueMessage("message"), 20, 0, null, null); CloudQueueMessage m1 = this.queue.retrieveMessage(); Date d1 = m1.getExpirationTime(); this.queue.deleteMessage(m1); Thread.sleep(2000); this.queue.addMessage(new CloudQueueMessage("message"), 20, 0, null, null); CloudQueueMessage m2 = this.queue.retrieveMessage(); Date d2 = m2.getExpirationTime(); this.queue.deleteMessage(m2); assertTrue(d1.before(d2)); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testDeleteMessageWithDifferentQueueInstance() throws StorageException, URISyntaxException { final CloudQueueClient qClient = TestHelper.createCloudQueueClient(); final String queueName = QueueTestHelper.generateRandomQueueName(); final CloudQueue queue1 = qClient.getQueueReference(queueName); try { queue1.create(); String msgContent = UUID.randomUUID().toString(); final CloudQueueMessage message = new CloudQueueMessage(msgContent); queue1.addMessage(message); CloudQueueMessage msgFromRetrieved = queue1.retrieveMessage(); final CloudQueue queue2 = qClient.getQueueReference(queueName); queue2.deleteMessage(msgFromRetrieved); } finally { queue1.deleteIfExists(); } }
@Test public void testGB18030TestForSingleMessage() throws StorageException { String messageContent = GB18030CharSet; CloudQueueMessage cqm = new CloudQueueMessage(messageContent); this.queue.addMessage(cqm); CloudQueueMessage messageFromPeekMessage = this.queue.peekMessage(); assertEquals(messageContent, messageFromPeekMessage.getMessageContentAsString()); CloudQueueMessage messageFromRetrieveMessage = this.queue.retrieveMessage(); assertEquals(messageContent, messageFromRetrieveMessage.getMessageContentAsString()); String messageContentUpdated = messageContent + " updated"; messageFromRetrieveMessage.setMessageContent(messageContentUpdated); this.queue.updateMessage(messageFromRetrieveMessage, 0); messageFromPeekMessage = this.queue.peekMessage(null, null); assertEquals(messageContent, messageFromPeekMessage.getMessageContentAsString()); messageContentUpdated = messageContent + " updated again"; messageFromRetrieveMessage.setMessageContent(messageContentUpdated); this.queue.updateMessage(messageFromRetrieveMessage, 0, EnumSet.of(MessageUpdateFields.VISIBILITY, MessageUpdateFields.CONTENT), null, null); messageFromRetrieveMessage = this.queue.retrieveMessage(5, null, null); assertEquals(messageContentUpdated, messageFromRetrieveMessage.getMessageContentAsString()); this.queue.deleteMessage(messageFromRetrieveMessage); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testQueueCreateIfNotExistsAfterCreate() throws URISyntaxException, StorageException { final CloudQueueClient qClient = TestHelper.createCloudQueueClient(); final String queueName = QueueTestHelper.generateRandomQueueName(); CloudQueue queue = qClient.getQueueReference(queueName); assertEquals(queueName, queue.getName()); try { OperationContext createQueueContext1 = new OperationContext(); assertTrue(queue.createIfNotExists(null, createQueueContext1)); OperationContext createQueueContext2 = new OperationContext(); assertFalse(queue.createIfNotExists(null, createQueueContext2)); } finally { queue.deleteIfExists(); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testAddMessageLargeVisibilityDelay() throws StorageException { String msgContent = UUID.randomUUID().toString(); final CloudQueueMessage message = new CloudQueueMessage(msgContent); this.queue.addMessage(message, 100, 50, null, null); CloudQueueMessage msgFromRetrieve1 = this.queue.retrieveMessage(); assertNull(msgFromRetrieve1); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testUpdateMessage() throws StorageException { this.queue.clear(); String messageContent = "messagetest"; CloudQueueMessage message1 = new CloudQueueMessage(messageContent); this.queue.addMessage(message1); CloudQueueMessage message2 = new CloudQueueMessage(messageContent); this.queue.addMessage(message2); String newMesage = message1.getMessageContentAsString() + "updated"; for (CloudQueueMessage message : this.queue.retrieveMessages(32)) { OperationContext oc = new OperationContext(); message.setMessageContent(newMesage); this.queue.updateMessage(message, 0, EnumSet.of(MessageUpdateFields.VISIBILITY), null, oc); assertEquals(oc.getLastResult().getStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); CloudQueueMessage messageFromGet = this.queue.retrieveMessage(); assertEquals(messageFromGet.getMessageContentAsString(), messageContent); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testDeleteMessage() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); this.queue.addMessage(message1); CloudQueueMessage message2 = new CloudQueueMessage("messagetest2"); this.queue.addMessage(message2); for (CloudQueueMessage message : this.queue.retrieveMessages(32)) { OperationContext deleteQueueContext = new OperationContext(); this.queue.deleteMessage(message, null, deleteQueueContext); assertEquals(deleteQueueContext.getLastResult().getStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); } assertTrue(this.queue.retrieveMessage() == null); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testShouldEncodeMessage() throws StorageException { String msgContent = UUID.randomUUID().toString(); final CloudQueueMessage message = new CloudQueueMessage(msgContent); this.queue.setShouldEncodeMessage(true); this.queue.addMessage(message); CloudQueueMessage msgFromRetrieve1 = this.queue.retrieveMessage(); assertEquals(msgFromRetrieve1.getMessageContentAsString(), msgContent); this.queue.deleteMessage(msgFromRetrieve1); this.queue.setShouldEncodeMessage(false); this.queue.addMessage(message); CloudQueueMessage msgFromRetrieve2 = this.queue.retrieveMessage(); assertEquals(msgFromRetrieve2.getMessageContentAsString(), msgContent); this.queue.deleteMessage(msgFromRetrieve2); this.queue.setShouldEncodeMessage(true); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testQueueDownloadAttributes() throws StorageException, URISyntaxException { final CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); this.queue.addMessage(message1); final CloudQueueMessage message2 = new CloudQueueMessage("messagetest2"); this.queue.addMessage(message2); final HashMap<String, String> metadata = new HashMap<String, String>(5); int sum = 5; for (int i = 0; i < sum; i++) { metadata.put("key" + i, "value" + i); } this.queue.setMetadata(metadata); this.queue.uploadMetadata(); CloudQueueClient qClient = TestHelper.createCloudQueueClient(); final CloudQueue queue2 = qClient.getQueueReference(this.queue.getName()); queue2.downloadAttributes(); assertEquals(sum, queue2.getMetadata().size()); }
private CompletableFuture<Void> checkpoint(CloudQueue cloudQueue, CloudQueueMessage cloudQueueMessage) { return CompletableFuture.runAsync(() -> { try { cloudQueue.deleteMessage(cloudQueueMessage); } catch (StorageException e) { throw new StorageQueueRuntimeException("Failed to checkpoint message from storage queue", e); } }); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testQueueDelete() throws URISyntaxException, StorageException { final CloudQueueClient qClient = TestHelper.createCloudQueueClient(); final String queueName = QueueTestHelper.generateRandomQueueName(); CloudQueue queue = qClient.getQueueReference(queueName); assertEquals(queueName, queue.getName()); try { OperationContext createQueueContext = new OperationContext(); queue.create(null, createQueueContext); assertEquals(createQueueContext.getLastResult().getStatusCode(), HttpURLConnection.HTTP_CREATED); OperationContext deleteQueueContext = new OperationContext(); queue.delete(null, deleteQueueContext); assertEquals(deleteQueueContext.getLastResult().getStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); try { queue.downloadAttributes(); fail(); } catch (StorageException ex) { assertEquals("Expected 404 Exception", ex.getHttpStatusCode(), HttpURLConnection.HTTP_NOT_FOUND); } } finally { queue.deleteIfExists(); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testQueueCreateAfterDelete() throws URISyntaxException, StorageException { final CloudQueueClient qClient = TestHelper.createCloudQueueClient(); final String queueName = QueueTestHelper.generateRandomQueueName(); CloudQueue queue = qClient.getQueueReference(queueName); assertEquals(queueName, queue.getName()); try { OperationContext createQueueContext1 = new OperationContext(); assertTrue(queue.createIfNotExists(null, createQueueContext1)); assertEquals(createQueueContext1.getLastResult().getStatusCode(), HttpURLConnection.HTTP_CREATED); assertTrue(queue.deleteIfExists()); try { queue.create(); fail("Queue CreateIfNotExists did not throw exception while trying to create a queue in BeingDeleted State"); } catch (StorageException ex) { assertEquals("Expected 409 Exception, QueueBeingDeleted not thrown", ex.getHttpStatusCode(), HttpURLConnection.HTTP_CONFLICT); assertEquals("Expected 409 Exception, QueueBeingDeleted not thrown", ex.getExtendedErrorInformation() .getErrorCode(), StorageErrorCodeStrings.QUEUE_BEING_DELETED); } } finally { queue.deleteIfExists(); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testGetApproximateMessageCount() throws StorageException { assertTrue(this.queue.getApproximateMessageCount() == 0); this.queue.addMessage(new CloudQueueMessage("message1")); this.queue.addMessage(new CloudQueueMessage("message2")); assertTrue(this.queue.getApproximateMessageCount() == 0); this.queue.downloadAttributes(); assertTrue(this.queue.getApproximateMessageCount() == 2); this.queue.delete(); }
/** * Creates the queue if it does not already exist. * * @return A value of <code>true</code> if the queue is created in the storage service, otherwise <code>false</code> * . * * @throws StorageException * If a storage service error occurred during the operation. */ @DoesServiceRequest public boolean createIfNotExists() throws StorageException { return this.createIfNotExists(null /* options */, null /* opContext */); }