node.js - Operation failed: ExchangeBind; 404 (NOT-FOUND) with message "NOT_FOUND - no exchange 'dead.letters-q.1' -
as referenced in previous question, i'm trying use wascally
npm package meteor , it's throwing seems setup/config error exchanges
w20150925-14:22:34.692(-4)? (stderr) w20150925-14:22:34.693(-4)? (stderr) /users/rkstar/dev/projects/wacoosta/.meteor/local/isopacks/npm-container/npm/node_modules/wascally/node_modules/when/lib/fatal.js:12 w20150925-14:22:34.693(-4)? (stderr) throw e; w20150925-14:22:34.693(-4)? (stderr) ^ w20150925-14:22:34.694(-4)? (stderr) error: operation failed: exchangebind; 404 (not-found) message "not_found - no exchange 'dead.letters-q.1' in vhost 'jzywgjfv'" w20150925-14:22:34.694(-4)? (stderr) @ reply (/users/rkstar/dev/projects/wacoosta/.meteor/local/isopacks/npm-container/npm/node_modules/wascally/node_modules/amqplib/lib/channel.js:126:17) w20150925-14:22:34.694(-4)? (stderr) @ channel.c.accept (/users/rkstar/dev/projects/wacoosta/.meteor/local/isopacks/npm-container/npm/node_modules/wascally/node_modules/amqplib/lib/channel.js:399:7) w20150925-14:22:34.694(-4)? (stderr) @ connection.mainaccept [as accept] (/users/rkstar/dev/projects/wacoosta/.meteor/local/isopacks/npm-container/npm/node_modules/wascally/node_modules/amqplib/lib/connection.js:62:33) w20150925-14:22:34.694(-4)? (stderr) @ socket.go (/users/rkstar/dev/projects/wacoosta/.meteor/local/isopacks/npm-container/npm/node_modules/wascally/node_modules/amqplib/lib/connection.js:465:48) w20150925-14:22:34.694(-4)? (stderr) @ socket.emit (events.js:92:17) w20150925-14:22:34.694(-4)? (stderr) @ emitreadable_ (_stream_readable.js:427:10) w20150925-14:22:34.694(-4)? (stderr) @ emitreadable (_stream_readable.js:423:5) w20150925-14:22:34.694(-4)? (stderr) @ readableaddchunk (_stream_readable.js:166:9) w20150925-14:22:34.695(-4)? (stderr) @ socket.readable.push (_stream_readable.js:128:10) w20150925-14:22:34.695(-4)? (stderr) @ tcp.onread (net.js:529:21)
here rabbit config:
{ connection: { user: meteor.settings.rabbitmq.username, pass: meteor.settings.rabbitmq.password, server: meteor.settings.rabbitmq.server, //port: 5672, //timeout: 2000 vhost: meteor.settings.rabbitmq.vhost }, exchanges:[ { name: messages.exchanges.dead, type: 'direct' }, { name: messages.exchanges.tmdb, type: 'direct' }, { name: messages.exchanges.graph, type: 'direct' } ], queues:[ { name: messages.queues.tmdb.read, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.tmdb.dead, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.read, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.write, subscribe: false, durable: true, deadletter: messages.exchanges.dead } ], bindings:[{ exchange: messages.exchanges.tmdb, target: messages.queues.tmdb.read, keys: [ messages.keys.tmdb.read.imdb, messages.keys.tmdb.read.movies, messages.keys.tmdb.read.tv, messages.keys.tmdb.read.credits, messages.keys.tmdb.read.people ] },{ exchange: messages.exchanges.dead, target: messages.queues.dead, keys: [ messages.keys.tmdb.dead, messages.keys.graph.dead ] },{ exchange: messages.exchanges.graph, target: messages.queues.graph.read, keys: [ messages.keys.graph.read.any, messages.keys.graph.read.movies, messages.keys.graph.read.tv, messages.keys.graph.read.people, messages.keys.graph.read.places ] },{ exchange: messages.exchanges.graph, target: messages.queues.graph.write, keys: [ messages.keys.graph.write.any, messages.keys.graph.write.movies, messages.keys.graph.write.tv, messages.keys.graph.write.people, messages.keys.graph.write.places, messages.keys.graph.write.relationships ] } ] }
i checked in rabbitmq admin panel , i've explicitly set binding between dead letters exchange , queue, i'm not sure it's talking or how resolve it.
eureka! after digging through code , digging rabbitmq dashboard, found problem.
exchanges:[ { name: messages.exchanges.dead, type: 'direct' }, { name: messages.exchanges.tmdb, type: 'direct' }, { name: messages.exchanges.graph, type: 'direct' } ], queues:[ { name: messages.queues.tmdb.read, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.tmdb.dead, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.read, subscribe: false, durable: true, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.write, subscribe: false, durable: true, deadletter: messages.exchanges.dead } ]
i defining messages.exchanges.dead
exchange, , setting deadletter
exchange various queues. problem dead-letters.q1
queue not being defined in queues:[]
array.
this meant while dead-letters-ex.1
exchange existed , have messages routed it, there no dead-letters-q.1
created or available route messages to.
exchangebind; 404 (not-found) message "not_found - no exchange 'dead.letters-q.1'
the exchangebind
error got me looking @ bindings of queues exchanges led me down rabbit hole solution (pun intended).
now config looks this:
exchanges:[ { name: messages.exchanges.dead, type: 'direct' }, { name: messages.exchanges.tmdb, type: 'direct' }, { name: messages.exchanges.graph, type: 'direct' } ], queues:[ { name: messages.queues.dead, subscribe: false, durable: false }, { name: messages.queues.tmdb.read, subscribe: false, durable: false, deadletter: messages.exchanges.dead }, { name: messages.queues.tmdb.dead, subscribe: false, durable: false, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.read, subscribe: false, durable: false, deadletter: messages.exchanges.dead }, { name: messages.queues.graph.write, subscribe: false, durable: false, deadletter: messages.exchanges.dead } ]
and can continue building , debugging other parts of application.
Comments
Post a Comment