attributes.put("azure.queue.expirationTime", message.getExpirationTime().toString()); attributes.put("azure.queue.messageId", message.getMessageId()); attributes.put("azure.queue.popReceipt", message.getPopReceipt());
private StorageRequest<CloudQueueClient, CloudQueue, Void> deleteMessageImpl(final CloudQueueMessage message, final QueueRequestOptions options) { final String messageId = message.getId(); final String messagePopReceipt = message.getPopReceipt(); final StorageRequest<CloudQueueClient, CloudQueue, Void> putRequest = new StorageRequest<CloudQueueClient, CloudQueue, Void>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudQueueClient client, CloudQueue queue, OperationContext context) throws Exception { return QueueRequest.deleteMessage( queue.getIndividualMessageAddress(messageId, context).getUri(this.getCurrentLocation()), options, context, messagePopReceipt); } @Override public void signRequest(HttpURLConnection connection, CloudQueueClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, -1L, context); } @Override public Void preProcessResponse(CloudQueue parentObject, CloudQueueClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_NO_CONTENT) { this.setNonExceptionedRetryableFailure(true); } return null; } }; return putRequest; }
private StorageRequest<CloudQueueClient, CloudQueue, Void> deleteMessageImpl(final CloudQueueMessage message, final QueueRequestOptions options) { final String messageId = message.getId(); final String messagePopReceipt = message.getPopReceipt(); final StorageRequest<CloudQueueClient, CloudQueue, Void> putRequest = new StorageRequest<CloudQueueClient, CloudQueue, Void>( options, this.getStorageUri()) { @Override public HttpURLConnection buildRequest(CloudQueueClient client, CloudQueue queue, OperationContext context) throws Exception { return QueueRequest.deleteMessage( queue.getIndividualMessageAddress(messageId, context).getUri(this.getCurrentLocation()), options, context, messagePopReceipt); } @Override public void signRequest(HttpURLConnection connection, CloudQueueClient client, OperationContext context) throws Exception { StorageRequest.signBlobQueueAndFileRequest(connection, client, -1L, context); } @Override public Void preProcessResponse(CloudQueue parentObject, CloudQueueClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_NO_CONTENT) { this.setNonExceptionedRetryableFailure(true); } return null; } }; return putRequest; }
@Override public HttpURLConnection buildRequest(CloudQueueClient client, CloudQueue queue, OperationContext context) throws Exception { if (messageUpdateFields.contains(MessageUpdateFields.CONTENT)) { final byte[] messageBytes = QueueMessageSerializer.generateMessageRequestBody(stringToSend); this.setSendStream(new ByteArrayInputStream(messageBytes)); this.setLength((long) messageBytes.length); } return QueueRequest.updateMessage( queue.getIndividualMessageAddress(message.getId(), context).getUri(this.getCurrentLocation()), options, context, message.getPopReceipt(), visibilityTimeoutInSeconds); }
@Override public HttpURLConnection buildRequest(CloudQueueClient client, CloudQueue queue, OperationContext context) throws Exception { if (messageUpdateFields.contains(MessageUpdateFields.CONTENT)) { try { final byte[] messageBytes = QueueMessageSerializer.generateMessageRequestBody(stringToSend); this.setSendStream(new ByteArrayInputStream(messageBytes)); this.setLength((long) messageBytes.length); } catch (IllegalArgumentException e) { // The request was not even made. There was an error while trying to write the message. Just throw. StorageException translatedException = StorageException.translateClientException(e); throw translatedException; } catch (IllegalStateException e) { // The request was not even made. There was an error while trying to write the message. Just throw. StorageException translatedException = StorageException.translateClientException(e); throw translatedException; } catch (IOException e) { // The request was not even made. There was an error while trying to write the message. Just throw. StorageException translatedException = StorageException.translateClientException(e); throw translatedException; } } return QueueRequest.updateMessage( queue.getIndividualMessageAddress(message.getId(), context).getUri(this.getCurrentLocation()), options, context, message.getPopReceipt(), visibilityTimeoutInSeconds); }
@Override public Void preProcessResponse(CloudQueue queue, CloudQueueClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_CREATED) { this.setNonExceptionedRetryableFailure(true); return null; } // Parse the returned messages CloudQueueMessage returnedMessage = QueueMessageHandler.readMessages( this.getConnection().getInputStream(), queue.shouldEncodeMessage).get(0); message.setInsertionTime(returnedMessage.getInsertionTime()); message.setExpirationTime(returnedMessage.getExpirationTime()); message.setNextVisibleTime(returnedMessage.getNextVisibleTime()); message.setMessageId(returnedMessage.getMessageId()); message.setPopReceipt(returnedMessage.getPopReceipt()); return null; } };
@Override public Void preProcessResponse(CloudQueue queue, CloudQueueClient client, OperationContext context) throws Exception { if (this.getResult().getStatusCode() != HttpURLConnection.HTTP_CREATED) { this.setNonExceptionedRetryableFailure(true); return null; } // Parse the returned messages CloudQueueMessage returnedMessage = QueueMessageHandler.readMessages( this.getConnection().getInputStream(), queue.shouldEncodeMessage).get(0); message.setInsertionTime(returnedMessage.getInsertionTime()); message.setExpirationTime(returnedMessage.getExpirationTime()); message.setNextVisibleTime(returnedMessage.getNextVisibleTime()); message.setMessageId(returnedMessage.getMessageId()); message.setPopReceipt(returnedMessage.getPopReceipt()); return null; } };
break; case TAzureStorageQueueInputProperties.FIELD_POP_RECEIPT: record.put(f.pos(), current.getPopReceipt()); break; case TAzureStorageQueueInputProperties.FIELD_NEXT_VISIBLE_TIME:
break; case TAzureStorageQueueInputProperties.FIELD_POP_RECEIPT: record.put(f.pos(), current.getPopReceipt()); break; case TAzureStorageQueueInputProperties.FIELD_NEXT_VISIBLE_TIME:
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testPeekMessagesFromEmptyQueue() throws StorageException { for (CloudQueueMessage m : this.queue.peekMessages(32)) { assertTrue(m.getId() != null); assertTrue(m.getPopReceipt() == null); } }
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testRetrieveMessagesFromEmptyQueue() throws StorageException { for (CloudQueueMessage m : this.queue.retrieveMessages(32)) { assertTrue(m.getId() != null); assertTrue(m.getPopReceipt() == 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()); }
Utility.assertNotNull("message", message); Utility.assertNotNullOrEmpty("messageId", message.getId()); Utility.assertNotNullOrEmpty("popReceipt", message.getPopReceipt());
Utility.assertNotNull("message", message); Utility.assertNotNullOrEmpty("messageId", message.getId()); Utility.assertNotNullOrEmpty("popReceipt", message.getPopReceipt());
private void VerifyAddMessageResult(CloudQueueMessage originalMessage, String expectedMessageContent) { assertFalse(Utility.isNullOrEmpty(originalMessage.getId())); assertNotNull(originalMessage.getInsertionTime()); assertNotNull(originalMessage.getExpirationTime()); assertFalse(Utility.isNullOrEmpty(originalMessage.getPopReceipt())); assertTrue(originalMessage.messageContent.equals(expectedMessageContent)); assertNotNull(originalMessage.getNextVisibleTime()); } }
@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(); }
Utility.assertNotNull("message", message); Utility.assertNotNullOrEmpty("messageId", message.getId()); Utility.assertNotNullOrEmpty("popReceipt", message.getPopReceipt());
@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); } }
Utility.assertNotNull("message", message); Utility.assertNotNullOrEmpty("messageId", message.getId()); Utility.assertNotNullOrEmpty("popReceipt", message.getPopReceipt());