/** * Updates the specified message in the queue with a new visibility timeout value in seconds. * * @param message * The {@link CloudQueueMessage} to update in the queue. * * @param visibilityTimeoutInSeconds * Specifies the new visibility timeout for the message, in seconds. * * @throws StorageException * If a storage service error occurred during the operation. */ public void updateMessage(final CloudQueueMessage message, final int visibilityTimeoutInSeconds) throws StorageException { this.updateMessage(message, visibilityTimeoutInSeconds, EnumSet.of(MessageUpdateFields.VISIBILITY), null /* options */, null /* opContext */); }
/** * Updates the specified message in the queue with a new visibility timeout value in seconds. * * @param message * The {@link CloudQueueMessage} to update in the queue. * * @param visibilityTimeoutInSeconds * Specifies the new visibility timeout for the message, in seconds. * * @throws StorageException * If a storage service error occurred during the operation. */ public void updateMessage(final CloudQueueMessage message, final int visibilityTimeoutInSeconds) throws StorageException { this.updateMessage(message, visibilityTimeoutInSeconds, EnumSet.of(MessageUpdateFields.VISIBILITY), null /* options */, null /* opContext */); }
private void updateMessage(Exchange exchange) throws Exception { CloudQueue client = QueueServiceUtil.createQueueClient(getConfiguration()); QueueServiceRequestOptions opts = QueueServiceUtil.getRequestOptions(exchange); CloudQueueMessage message = getCloudQueueMessage(exchange); LOG.trace("Updating the message in the queue [{}] from exchange [{}]...", getConfiguration().getQueueName(), exchange); EnumSet<MessageUpdateFields> fields = null; Object fieldsObject = exchange.getIn().getHeader(QueueServiceConstants.MESSAGE_UPDATE_FIELDS); if (fieldsObject instanceof EnumSet) { @SuppressWarnings("unchecked") EnumSet<MessageUpdateFields> theFields = (EnumSet<MessageUpdateFields>)fieldsObject; fields = theFields; } else if (fieldsObject instanceof MessageUpdateFields) { fields = EnumSet.of((MessageUpdateFields)fieldsObject); } client.updateMessage(message, getConfiguration().getMessageVisibilityDelay(), fields, opts.getRequestOpts(), opts.getOpContext()); }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testUpdateMessageNullMessage() throws StorageException { try { this.queue.updateMessage(null, 0); fail(); } catch (final IllegalArgumentException e) { } }
@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(); }
.of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY); queue.updateMessage(updateMessage, 0, updateFields, null, null);
@Test @Category({ DevFabricTests.class, DevStoreTests.class, SlowTests.class }) public void testUpdateMessageFullPass() throws StorageException, InterruptedException { CloudQueueMessage message = new CloudQueueMessage("message"); this.queue.addMessage(message, 20, 0, null, null); CloudQueueMessage message1 = this.queue.retrieveMessage(); String popreceipt1 = message1.getPopReceipt(); Date NextVisibleTim1 = message1.getNextVisibleTime(); this.queue.updateMessage(message1, 100, EnumSet.of(MessageUpdateFields.VISIBILITY), null, null); String popreceipt2 = message1.getPopReceipt(); Date NextVisibleTim2 = message1.getNextVisibleTime(); assertTrue(popreceipt2 != popreceipt1); assertTrue(NextVisibleTim1.before(NextVisibleTim2)); Thread.sleep(2000); String newMesage = message.getMessageContentAsString() + "updated"; message.setMessageContent(newMesage); OperationContext oc = new OperationContext(); this.queue.updateMessage(message1, 100, EnumSet.of(MessageUpdateFields.CONTENT), null, oc); assertEquals(oc.getLastResult().getStatusCode(), HttpURLConnection.HTTP_NO_CONTENT); String popreceipt3 = message1.getPopReceipt(); Date NextVisibleTim3 = message1.getNextVisibleTime(); assertTrue(popreceipt3 != popreceipt2); assertTrue(NextVisibleTim2.before(NextVisibleTim3)); assertTrue(this.queue.retrieveMessage() == null); this.queue.updateMessage(message1, 0, EnumSet.of(MessageUpdateFields.VISIBILITY), null, null); CloudQueueMessage messageFromGet = this.queue.retrieveMessage(); assertEquals(messageFromGet.getMessageContentAsString(), message1.getMessageContentAsString()); }
@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 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 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); } }
OperationContext oc = new OperationContext(); if (policy.getPermissions().contains(SharedAccessAccountPermissions.UPDATE)) { sasQueue.updateMessage(message, 1, EnumSet.of(MessageUpdateFields.CONTENT), null, oc); sasQueue.updateMessage(message, 1, EnumSet.of(MessageUpdateFields.CONTENT), null, oc); fail(); queue.updateMessage(message, 1, EnumSet.of(MessageUpdateFields.CONTENT), null, oc);
assertEquals(messageContents[count], message.getMessageContentAsString()); message.setMessageContent(message.getMessageContentAsString() + " updated"); this.queue.updateMessage(message, 0, EnumSet.of(MessageUpdateFields.VISIBILITY, MessageUpdateFields.CONTENT), null, null); count++;