Я немного запутался / застрял. Я перечитывал лучшие практики RabbitMQ, и появляется много статей о том, что у вас должно быть два соединения - одно для вашего подписчика, а другое для вашего издателя.
Итак, что я в итоге сделал, так это запустил мой сервер так:
amqp.connect(RABBIT_URL, (err, conn) => {
conn.createChannel((ampqErr, subscribingChannel) => {
// .....
})
amqp.connect(RABBIT_URL, (err, conn) => {
conn.createChannel((ampqErr, publishingChannel) => {
// .......
});
... но я на 99% уверен, что это не правильный способ сделать это. Вот где мой первый вопрос. Как мне сохранить это правило в рамках одного сервиса?
Кроме того, на самом деле это не сработает, поскольку после выполнения задачи (т.е. завершения очистки страницы) в конце этого события мне нужно запустить событие, которое вызовет анализ в другом сервисе. Я в значительной степени делал
ch.publish(...)
прямо перед тем, как я сделаю ack
. Это не чисто, так как канал, который я использовал исключительно для потребления, теперь публикует события для запуска анализа из другого сервиса.
Этот тип заказа «событие / действие» осуществляется через 2 другие службы.
(1. web / app -> 2. scrape -> 3. parse -> 4. analytics)
Мой план - просто вызвать событие после завершения в каждой службе. Это правильный способ сделать это?
Полагаю, есть два вопроса.
Спасибо .. спасибо .. большое спасибо тому, кто может мне здесь помочь. Потерял целые выходные, просто баловавшись. :(