/** * 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::getContentType * @covers WindowsAzure\ServiceBus\Models\BrokeredMessage::setContentType */ public function testGetSetContentType() { // Setup $expected = 'testContentType'; $brokeredMessage = new BrokeredMessage(); // Test $brokeredMessage->setContentType($expected); $actual = $brokeredMessage->getContentType(); // 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::sendTopicMessage * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveMessage * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveSubscriptionMessage * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::getSubscription */ public function testReceiveMessageWillNotDeleteSubscription() { // Setup $topicName = 'testReceiveMessageWillNotDeleteSubscription'; $subscriptionName = 'sub'; $messageBody = '<p>testReceiveMessageWillNotDeleteSubscription</p>'; $topicInfo = new TopicInfo($topicName); $subscriptionInfo = new SubscriptionInfo($subscriptionName); $brokeredMessage = new BrokeredMessage(); $brokeredMessage->setBody($messageBody); $brokeredMessage->setContentType('text/html'); $createTopicResult = $this->createTopic($topicInfo); $createSubscriptionResult = $this->createSubscription($topicName, $subscriptionInfo); $receiveMessageOptions = new ReceiveMessageOptions(); $receiveMessageOptions->setTimeout(5); $receiveMessageOptions->setReceiveAndDelete(); // Test $this->restProxy->sendTopicMessage($topicName, $brokeredMessage); $receivedMessage = $this->restProxy->receiveSubscriptionMessage($topicName, $subscriptionName, $receiveMessageOptions); $subscriptionInfo = $this->restProxy->getSubscription($topicName, $subscriptionName); // Assert $this->assertNotNull($subscriptionInfo); $this->assertEquals($subscriptionName, $subscriptionInfo->getTitle()); }
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::createSubscription * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createTopic * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveSubscriptionMessage * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::sendTopicMessage */ public function testSubscriptionWillReceiveMessage() { // Arrange $topicName = 'TestSubscriptionWillReceiveMessage'; $this->restProxy->createTopic(new TopicInfo($topicName)); $this->restProxy->createSubscription($topicName, new SubscriptionInfo('sub')); // Act $message = new BrokeredMessage('<p>Testing subscription</p>'); $message->setContentType('text/html'); $this->restProxy->sendTopicMessage($topicName, $message); // Act $message = $this->restProxy->receiveSubscriptionMessage($topicName, 'sub', $this->RECEIVE_AND_DELETE_5_SECONDS); // Assert $this->assertNotNull($message, '$message'); $this->assertEquals('<p>Testing subscription</p>', $message->getBody(), '$message->getBody())'); $this->assertEquals('text/html', $message->getContentType(), '$message->getContentType()'); }