/** * Receives a message. * * Queues: * * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780735 * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780756 * * Topic Subscriptions: * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780722 * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780770 * * @param string $path The path of the * message. * @param ReceivedMessageOptions $receiveMessageOptions The options to * receive the message. * * @return BrokeredMessage */ public function receiveMessage($path, $receiveMessageOptions = null) { if (is_null($receiveMessageOptions)) { $receiveMessageOptions = new ReceiveMessageOptions(); } $httpCallContext = new HttpCallContext(); $httpCallContext->setPath($path); $httpCallContext->addStatusCode(Resources::STATUS_CREATED); $httpCallContext->addStatusCode(Resources::STATUS_NO_CONTENT); $httpCallContext->addStatusCode(Resources::STATUS_OK); $timeout = $receiveMessageOptions->getTimeout(); if (!is_null($timeout)) { $httpCallContext->addQueryParameter('timeout', $timeout); } if ($receiveMessageOptions->getIsReceiveAndDelete()) { $httpCallContext->setMethod(Resources::HTTP_DELETE); } elseif ($receiveMessageOptions->getIsPeekLock()) { $httpCallContext->setMethod(Resources::HTTP_POST); } else { throw new \InvalidArgumentException(Resources::INVALID_RECEIVE_MODE_MSG); } $response = $this->sendContext($httpCallContext); if ($response->getStatus() === Resources::STATUS_NO_CONTENT) { $brokeredMessage = null; } else { $responseHeaders = $response->getHeader(); $brokerProperties = new BrokerProperties(); if (array_key_exists('brokerproperties', $responseHeaders)) { $brokerProperties = BrokerProperties::create($responseHeaders['brokerproperties']); } if (array_key_exists('location', $responseHeaders)) { $brokerProperties->setLockLocation($responseHeaders['location']); } $brokeredMessage = new BrokeredMessage(); $brokeredMessage->setBrokerProperties($brokerProperties); if (array_key_exists(Resources::CONTENT_TYPE, $responseHeaders)) { $brokeredMessage->setContentType($responseHeaders[Resources::CONTENT_TYPE]); } if (array_key_exists('Date', $responseHeaders)) { $brokeredMessage->setDate($responseHeaders['Date']); } $brokeredMessage->setBody($response->getBody()); foreach (array_keys($responseHeaders) as $headerKey) { $value = $responseHeaders[$headerKey]; $decodedValue = json_decode($value); if (is_scalar($decodedValue)) { $brokeredMessage->setProperty($headerKey, $decodedValue); } } } return $brokeredMessage; }
/** * @covers WindowsAzure\ServiceBus\Models\BrokeredMessage::getProperties * @covers WindowsAzure\ServiceBus\Models\BrokeredMessage::setProperty */ public function testGetSetCustomProperties() { // Setup $expected = 'testCustomPropertyValue'; $testCustomPropertyKey = 'testCustomPropertyKey'; $brokeredMessage = new BrokeredMessage(); // Test $brokeredMessage->setProperty($testCustomPropertyKey, $expected); $customProperties = $brokeredMessage->getProperties(); $actual = $customProperties[strtolower($testCustomPropertyKey)]; // Assert $this->assertEquals($expected, $actual); }
private function createIssueMessage($issueId, $issueBody, $label, $i) { $message = new BrokeredMessage($issueBody); $message->setContentType('text/xml'); $message->setLabel($label); $message->setReplyTo('*****@*****.**'); $message->setMessageId($issueId); $customProperties = $this->getCustomProperties($i); foreach ($customProperties as $key => $value) { $message->setProperty($key, $value); } return $message; }
/** * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveQueueMessage */ public function testMessageMayHaveCustomProperties() { // Setup $queueName = 'testMessageMayHaveCustomProperties'; $queueDescription = new QueueDescription(); $queueInfo = new QueueInfo($queueName, $queueDescription); $expectedTestStringValue = 'testStringValue'; $expectedTestIntValue = 38; $expectedTestDoubleValue = 3.14159; $expectedTestBooleanValue = true; $expectedTestBooleanFalseValue = false; $expectedTestArrayValue = array(2, 3, 5, 7); $this->safeDeleteQueue($queueName); $this->createQueue($queueInfo); $brokeredMessage = new BrokeredMessage(); $brokeredMessage->setProperty('testString', $expectedTestStringValue); $brokeredMessage->setProperty('testInt', $expectedTestIntValue); $brokeredMessage->setProperty('testDouble', $expectedTestDoubleValue); $brokeredMessage->setProperty('testBoolean', $expectedTestBooleanValue); $brokeredMessage->setProperty('testBooleanFalse', $expectedTestBooleanFalseValue); $this->restProxy->sendQueueMessage($queueName, $brokeredMessage); $receiveMessageOptions = new ReceiveMessageOptions(); $receiveMessageOptions->setTimeout(5); $receiveMessageOptions->setReceiveAndDelete(); // Test $receivedMessage = $this->restProxy->receiveQueueMessage($queueName, $receiveMessageOptions); // Assert $this->assertNotNull($receivedMessage); $this->assertEquals($expectedTestStringValue, $receivedMessage->getProperty('testString')); $this->assertEquals($expectedTestIntValue, $receivedMessage->getProperty('testInt')); $this->assertEquals($expectedTestDoubleValue, $receivedMessage->getProperty('testDouble')); $this->assertEquals($expectedTestBooleanValue, $receivedMessage->getProperty('testBoolean')); $this->assertEquals($expectedTestBooleanFalseValue, $receivedMessage->getProperty('testBooleanFalse')); }
private function createIssueMessage($issueId, $issueBody, $label, $messageLocation) { $message = new BrokeredMessage($issueBody); $bp = new BrokerProperties(); $bp->setLabel($label); // $bp->setMessageLocation($messageLocation); $bp->setReplyTo('*****@*****.**'); $bp->setMessageId($issueId); $bp->setCorrelationId('correlationid' + $label); $bp->setDeliveryCount(1); $bp->setLockedUntilUtc(new \DateTime('2/4/1984')); $bp->setLockLocation($label + 'locallocation'); $bp->setLockToken($label + 'locltoken'); $bp->setSequenceNumber(12); $message->setBrokerProperties($bp); $message->setContentType('text/xml'); $message->setLabel($label); $message->setReplyTo('*****@*****.**'); $message->setMessageId($issueId); $customProperties = $this->getCustomProperties(1); foreach ($customProperties as $key => $value) { $message->setProperty($key, $value); } return $message; }
/** * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveQueueMessage * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::sendQueueMessage */ public function testMessagesMayHaveCustomProperties() { // Arrange $queueName = 'TestMessagesMayHaveCustomProperties'; $this->restProxy->createQueue(new QueueInfo($queueName)); // Act $message = new BrokeredMessage(''); $message->setProperty('hello', 'world'); $message->setProperty('foo', 42); $this->restProxy->sendQueueMessage($queueName, $message); $message = $this->restProxy->receiveQueueMessage($queueName, $this->RECEIVE_AND_DELETE_5_SECONDS); // Assert $this->assertEquals('world', $message->getProperty('hello'), '$message->getProperty(\'hello\')'); $this->assertEquals(42, $message->getProperty('foo'), '$message->getProperty(\'foo\')'); }