Search code examples
node.jsexpressiron.ioironmq

IronMQ empty message body from push queue when read from Node.JS / Express.JS


I'm playing with node + express + IronMQ and I'm encountering a little problem.

In my express.js POST callback I'm getting {} as request body but I'm sure that the message content is being pushed from my IronMQ message queue.

Any hint ?


Solution

  • IronMQ have now updated their push queues to send custom headers. If you set the headers to 'Content-Type': 'application/json' in the list of subscribers when creating the queue, then the body gets parsed correctly. eg

    # update groups queue
    payload =
      subscribers: [
        {
          url: "#{process.env.ROOT_URL}/groups/update"
          headers:
            'Content-Type': 'application/json' # this fixes request parsing issue
        }
      ]
      push_type: 'multicast'
      retries: 3
      retries_delay: 10
      error_queue: 'groups_errors'
    
    url = "https://mq-aws-us-east-1.iron.io/1/projects/#{process.env.IRON_MQ_PROJECT_ID}/queues/groups"
    
    headers =
      'Authorization': "OAuth #{process.env.IRON_MQ_TOKEN}"
      'Content-Type': 'application/json'
    
    result = HTTP.post url, {headers: headers, content: JSON.stringify(payload)}
    

    Here's the relevant change on github