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)}
Хорошо, я нашел причину моей проблемы и ее решение. Итак, чтобы ответить на мой собственный вопрос:
Проблема:
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