IronMQ пустое тело сообщения из очереди push при чтении из Node.JS / Express.JS

Я играю с node + express + IronMQ и столкнулся с небольшой проблемой.

В моем обратном вызове express.js POST я получаю {} в качестве тела запроса, но я уверен, что содержимое сообщения выталкивается из моей очереди сообщений IronMQ.

Любой намек?

2 ответа

Решение

IronMQ теперь обновил свои очереди push для отправки пользовательских заголовков. Если при создании очереди вы установили заголовки "Content-Type": "application/json" в списке подписчиков, то тело будет проанализировано правильно. например

# 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)}

Вот соответствующие изменения на GitHub

Хорошо, я нашел причину моей проблемы и ее решение. Итак, чтобы ответить на мой собственный вопрос:

Проблема:


1) Я получаю POST-сообщения из push-очереди IronMQ ( http://dev.iron.io/mq/reference/push_queues/), их тип содержимого text / plain.

2) Я использую промежуточное программное обеспечение connect.js (express.connect), и оно анализирует только application/json,application/x-www-form-urlencoded и multipart / form-data. http://www.senchalabs.org/connect/bodyParser.html

Таким образом, тело анализируется, и поскольку его тип содержимого не поддерживается, результатом является {}

Решение:

Чтобы получить текст моего текстового / простого запроса, я должен был разобрать его сам, как на /questions/21560763/expressjs-syiroe-telo/21560765#21560765

Другие вопросы по тегам