/** * @covers WindowsAzure\ServiceBus\Models\ReceiveMessageOptions::getReceiveMode * @covers WindowsAzure\ServiceBus\Models\ReceiveMessageOptions::setReceiveMode */ public function testGetSetReceiveMode() { // Setup $expected = 'testReceiveMode'; $receiveMessageOptions = new ReceiveMessageOptions(); // Test $receiveMessageOptions->setReceiveMode($expected); $actual = $receiveMessageOptions->getReceiveMode(); // Assert $this->assertEquals($expected, $actual); }
/** * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveQueueMessage */ private function doOneTimeSetup() { $testAlphaExists = false; $queues = $this->restProxy->listQueues()->getQueueInfos(); foreach ($queues as $queue) { $queueName = $queue->getTitle(); if (Utilities::startsWith($queueName, 'Test') || Utilities::startsWith($queueName, 'test')) { if (strtolower($queueName) == strtolower('TestAlpha')) { $testAlphaExists = true; $count = $queue->getQueueDescription()->getMessageCount(); for ($i = 0; $i != $count; ++$i) { $opts = new ReceiveMessageOptions(); $opts->setTimeout(20); try { $this->restProxy->receiveQueueMessage($queueName, $opts); } catch (\Exception $ex) { error_log($ex->getMessage()); } } } else { try { $this->restProxy->deleteQueue($queueName); } catch (\Exception $ex) { error_log($ex->getMessage()); } } } } foreach ($this->restProxy->listTopics()->getTopicInfos() as $topic) { $topicName = $topic->getTitle(); if (Utilities::startsWith($topicName, 'Test') || Utilities::startsWith($topicName, 'test')) { try { $this->restProxy->deleteTopic($topicName); } catch (\Exception $ex) { error_log($ex->getMessage()); } } } if (!$testAlphaExists) { try { $this->restProxy->createQueue(new QueueInfo('TestAlpha')); } catch (\Exception $ex) { error_log($ex->getMessage()); } } }
/** * @throws \PHPQueue\Exception\JobNotFoundException * @return array */ public function get() { $this->beforeGet(); $this->checkQueue(); try { $options = new ReceiveMessageOptions(); $options->setPeekLock(); $response = $this->getConnection()->receiveQueueMessage($this->queue_name, $options); if (empty($response)) { throw new JobNotFoundException('No message found.', 404); } $this->last_job = $response; $this->last_job_id = $response->getMessageId(); $this->afterGet(); return json_decode($response->getBody(), TRUE); } catch (ServiceException $ex) { throw new JobNotFoundException($ex->getMessage(), $ex->getCode()); } }
/** * 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\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')); }
/** * Pop the next job off of the queue. * * @param string $queue * * @return \Illuminate\Queue\Jobs\Job|null */ public function pop($queue = null) { $queue = $this->getQueue($queue); $options = new ReceiveMessageOptions(); $options->setPeekLock(); $job = $this->azure->receiveQueueMessage($queue, $options); if (!is_null($job)) { return new AzureJob($this->container, $this->azure, $job, $queue); } }