17937

Windows Azure PHP Queue REST Proxy Limit

Question:

I am writing a job processor to dequeue from Windows Azure Queue Storage using Azure PHP SDK. The job just try to fetch 32 messages in a batch, process them, and then delete the messages from the queue, and the repeat these steps. However, for each time I run the PHP script, the errors below is throw after the loop has run for exactly 27 times:

PHP Fatal error: Uncaught HTTP_Request2_MessageException: Malformed response: in /usr/share/php/HTTP/Request2/Adapter/Socket.php on line 1013 #0 /usr/share/php/HTTP/Request2/Adapter/Socket.php(1013): HTTP_Request2_Response->__construct('', true, Object(Net_URL2)) #1 /usr/share/php/HTTP/Request2/Adapter/Socket.php(136): HTTP_Request2_Adapter_Socket->readResponse() #2 /usr/share/php/HTTP/Request2.php(939): HTTP_Request2_Adapter_Socket->sendRequest(Object(HTTP_Request2)) #3 /usr/share/php/WindowsAzure/Common/Internal/Http/HttpClient.php(262): HTTP_Request2->send() #4 /usr/share/php/WindowsAzure/Common/Internal/RestProxy.php(141): WindowsAzure\Common\Internal\Http\HttpClient->send(Array, Object(WindowsAzure\Common\Internal\Http\Url)) #5 /usr/share/php/WindowsAzure/Common/Internal/ServiceRestProxy.php(86): WindowsAzure\Common\Internal\RestProxy->sendContext(Object(WindowsAzure\Common\Internal\Http\HttpCallContext)) #6 /usr/share/php/WindowsAzure/Common/Internal/ServiceRestProxy.php(125): WindowsAzure\Common\Internal\ServiceRestPr in /usr/share/php/HTTP/Request2/Response.php on line 215

Any Azure expert could help me?

Answer1:

In order to bypass the connection limit for HTTPS on Azure Storage operations (including the storage query, or say a block blob chunked upload), you need to set the azure blob service connection string to http.

You can do something like this (pass in false before doing a multi-operation call):

function getBlobStorageProxy($secure = true) { if ($secure) { $connectionString = "DefaultEndpointsProtocol=https;AccountName=[AccountName];AccountKey=[AccountKey]"; } else { $connectionString = "DefaultEndpointsProtocol=http;AccountName=[AccountName];AccountKey=[AccountKey]"; } $this->serviceBuilder = ServicesBuilder::getInstance(); return $this->serviceBuilder->createBlobService($connectionString); }

Recommend

  • transfer file ownership in Google Drive API
  • Forwarding in Play for Scala returns empty response
  • How to wait for first Observable to finish before executing others in parallel using RxJS
  • Nested Dropdown- ng-options inside ng-repeat in angularjs
  • KoGrid JSON Dynamic widgets, with nested server calls
  • Bundle install fails - Gem using github url - What is wrong?
  • Doctrine: UniqueEntity with Many-to-Many field
  • Cleave.js Phone CA
  • jQuery file download plugin
  • BizTalk Party not being resolved for incoming HL7v2 message
  • Understanding Intl.DateTimeFormat as a JavaScript object
  • Unicorn and Rails eat up 2x MySQL connections
  • Interpreting STRACE output - pipes and forks
  • Write output of for loop to multiple files
  • Error processing multiple files
  • Error in installing package: fatal error: stdlib.h: no such file or directory
  • Is there a way to save the selected text and highlight it again once the page is refreshed?
  • cygwin cannot exec 'git-add--interactive' permission denied
  • Eloquent paginate function in Slim 3 project using twig
  • error importing numpy
  • Should I or shouldn't I use the CachingConnectionFactory with hornetq 2.4.1
  • How would I use PHP exceptions to define a redirect?
  • Upload files with Ajax and Jquery
  • Do I've to free mysql result after storing it?
  • Is there a mandatory requirement to switch app.yaml?
  • bootstrap to use multiple ng-app
  • How to get icons for entities from eclipse?
  • File upload with ng-file-upload throwing error
  • A cron job substitute?
  • ExecuteAsync RestSharp to allow backgroundWorker CancellationPending c#
  • InvalidAuthenticityToken between subdomains when logging in with Rails app
  • json Serialization in asp
  • AngularJs get employee from factory
  • Hits per day in Google Big Query
  • FormattedException instead of throw new Exception(string.Format(…)) in .NET
  • How to stop GridView from loading again when I press back button?
  • Turn off referential integrity in Derby? is it possible?
  • Linking SubReports Without LinkChild/LinkMaster
  • XCode 8, some methods disappeared ? ex: layoutAttributesClass() -> AnyClass
  • JaxB to read class hierarchy