Comments (4)
Yeah, I was thinking of that, though I would probably put the optional argument (the topic) second.
from rabbit.js.
In the amqplib-based implementation, there's no 'topic' option at all yet. There is an undocumented feature whereby you can pass an object to #connect
, specifying the exchange name, type and routing key -- but this doesn't really help much if you want to change the topic for each write.
Of course, #write
already has a second argument, that is the encoding. So I think this would have to be another method, just for PUB sockets, perhaps #publish(topic, message, [encoding])
.
from rabbit.js.
OK I have implemented #publish
as above. There are implications.
One is that it doesn't make much sense unless a SUB socket can subscribe, in some way, to different topics. Here I've followed ZeroMQ, in that subscribing is distinct from connecting:
sub.connect('events');
sub.subscribe('critical.*');
But it's a breaking change, and the semantics are not obvious (do all subscriptions apply to all connections?), and it's all a bit confusing. So I may return to the structured-connection-address mentioned above -- that is, sub.connect({address: 'events', topic: 'critical.*'})
or even sub.connect('events', 'critical.*', callback)
.
from rabbit.js.
But it's a breaking change, and the semantics are not obvious (do all subscriptions apply to all
connections?), and it's all a bit confusing. So I may return to the structured-connection-address
Actually, I have added an optional argument to #connect
, just for SUB sockets, for the topic. The kind of exchange is determined by the routing
option given when creating the socket.
So, in its entirely, it looks like this:
var sub = ctx.socket('SUBSCRIBE', {routing: 'topic'});
var pub = ctx.socket('PUBLISH', {routing: 'topic'}); // must agree on routing if they are to talk
sub.connect('events', 'critical.*'); // the third argument would be a completion callback
pub.connect('events'); // ditto second argument
pub.publish('critical.alarm', "Emergency!", 'utf8');
from rabbit.js.
Related Issues (20)
- update dependencies and fix verion warnings HOT 1
- cannot connect to SUB HOT 1
- context.close() does not emit "close" event
- How to make a durable named queue?
- [SOLVED] Cant connect to remote host HOT 1
- Identifying the Queue name HOT 2
- Queue durability, exclusivity and consumerTag HOT 1
- Allow control over exchange creation HOT 4
- How to get the contents of header?
- bump amqp.node version to 0.4.4 (Node 4.x) HOT 1
- rabbit.js within AngularJS HOT 6
- How best to implement distributed semaphores? HOT 3
- Running REQ/REP as an RPC
- Advantage of using over plain AMQPLIB HOT 1
- Connect callback not optional
- List queues?
- message in queue impact by another message
- How to set queue x-max-length parameter HOT 3
- example error HOT 1
- Prefetch option can only be set through setsockopt and not as part of socket argument.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rabbit.js.