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});
/** * Adds a message to the back of the queue. * * @param message * A {@link CloudQueueMessage} object that specifies the message to add. * The message object is modified to include the message ID and pop receipt, * and can be used in subsequent calls to updateMessage and deleteMessage. * * @throws StorageException * If a storage service error occurred during the operation. */ @DoesServiceRequest public void addMessage(final CloudQueueMessage message) throws StorageException { this.addMessage(message, 0, 0, null /* options */, null /* opContext */); }
@Override public <T> CompletableFuture<Void> sendAsync(String queueName, @NonNull Message<T> message, PartitionSupplier partitionSupplier) { Assert.hasText(queueName, "queueName can't be null or empty"); CloudQueueMessage cloudQueueMessage = messageConverter.fromMessage(message, CloudQueueMessage.class); CloudQueue cloudQueue = storageQueueClientFactory.getOrCreateQueueClient(queueName); return CompletableFuture.runAsync(() -> { try { cloudQueue.addMessage(cloudQueueMessage); } catch (StorageException e) { throw new StorageQueueRuntimeException("Failed to send message to storage queue", e); } }); }
@Override public <T> CompletableFuture<Void> sendAsync(String queueName, @NonNull Message<T> message, PartitionSupplier partitionSupplier) { Assert.hasText(queueName, "queueName can't be null or empty"); CloudQueueMessage cloudQueueMessage = messageConverter.fromMessage(message, CloudQueueMessage.class); CloudQueue cloudQueue = storageQueueClientFactory.getOrCreateQueueClient(queueName); return CompletableFuture.runAsync(() -> { try { cloudQueue.addMessage(cloudQueueMessage); } catch (StorageException e) { throw new StorageQueueRuntimeException("Failed to send message to storage queue", e); } }); }
@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 testAddMessageNullMessage() throws StorageException { try { this.queue.addMessage(null); fail(); } catch (final IllegalArgumentException e) { } }
public void createQueueMessage(@NotNull StorageAccount storageAccount, @NotNull QueueMessage queueMessage, int timeToLiveInSeconds) throws AzureCmdException { try { CloudQueueClient client = getCloudQueueClient(storageAccount); CloudQueue cloudQueue = client.getQueueReference(queueMessage.getQueueName()); cloudQueue.addMessage(new CloudQueueMessage(queueMessage.getContent()), timeToLiveInSeconds, 0, null, null); } catch (Throwable t) { throw new AzureCmdException("Error creating the Queue Message", t); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testUpdateMessageInvalidMessage() throws StorageException { CloudQueueMessage message = new CloudQueueMessage("test"); this.queue.addMessage(message, 1, 0, null, null); this.queue.updateMessage(message, 0, EnumSet.of(MessageUpdateFields.CONTENT), null, null); this.queue.delete(); }
@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 testPeekMessages() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); this.queue.addMessage(message1); CloudQueueMessage message2 = new CloudQueueMessage("messagetest2"); this.queue.addMessage(message2); for (CloudQueueMessage m : this.queue.peekMessages(32)) { assertTrue(m.getId() != null); assertTrue(m.getPopReceipt() == null); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testRetrieveMessages() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); this.queue.addMessage(message1); CloudQueueMessage message2 = new CloudQueueMessage("messagetest2"); this.queue.addMessage(message2); for (CloudQueueMessage m : this.queue.retrieveMessages(32)) { assertTrue(m.getId() != null); assertTrue(m.getPopReceipt() != null); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testAddMessage() throws StorageException { String msgContent = UUID.randomUUID().toString(); final CloudQueueMessage message = new CloudQueueMessage(msgContent); this.queue.addMessage(message); VerifyAddMessageResult(message, msgContent); CloudQueueMessage msgFromRetrieve1 = this.queue.retrieveMessage(); assertEquals(message.getMessageContentAsString(), msgContent); assertEquals(msgFromRetrieve1.getMessageContentAsString(), msgContent); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testAddMessageVerifyPopReceipt() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("firstmessagetest1"); message1.setNextVisibleTime(null); this.queue.addMessage(message1); VerifyAddMessageResult(message1, "firstmessagetest1"); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testUpdateMessageWithContentChange() 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 oc = new OperationContext(); message.setMessageContent(message.getMessageContentAsString() + "updated"); this.queue.updateMessage(message, 100, EnumSet.of(MessageUpdateFields.CONTENT), null, oc); assertEquals(oc.getLastResult().getStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); } }
@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(); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testDequeueCountIncreases() throws StorageException, InterruptedException { this.queue.addMessage(new CloudQueueMessage("message"), 20, 0, null, null); CloudQueueMessage message1 = this.queue.retrieveMessage(1, null, null); assertTrue(message1.getDequeueCount() == 1); for (int i = 2; i < 5; i++) { Thread.sleep(2000); CloudQueueMessage message2 = this.queue.retrieveMessage(1, null, null); assertTrue(message2.getDequeueCount() == i); } }
@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 testQueueUnicodeAndXmlMessageTest() throws StorageException { String msgContent = "好<?xml version= 1.0 encoding= utf-8 ?>"; final CloudQueueMessage message = new CloudQueueMessage(msgContent); this.queue.addMessage(message); CloudQueueMessage msgFromRetrieve1 = this.queue.retrieveMessage(); assertEquals(message.getMessageContentAsString(), msgContent); assertEquals(msgFromRetrieve1.getMessageContentAsString(), msgContent); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testDeleteMessageWithAddMessagePopReceipt() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); message1.setNextVisibleTime(null); this.queue.addMessage(message1); VerifyAddMessageResult(message1, "messagetest1"); queue.deleteMessage(message1); assertNull(queue.retrieveMessage()); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testPeekMessage() throws StorageException { CloudQueueMessage message1 = new CloudQueueMessage("messagetest1"); this.queue.addMessage(message1); CloudQueueMessage msg = this.queue.peekMessage(); assertTrue(msg.getId() != null); assertTrue(msg.getPopReceipt() == null); this.queue.delete(); }