[rabbitmq-discuss] begginer question about performance & use case

Grzegorz Marszałek graf0 at post.pl
Tue Jan 10 16:16:40 GMT 2012


I'm very new to rabbitmq and messaging in general - but I see a lot of potential in it for my current project :)

I'd like to ask you, if rabbitmq is good choice for following scenario:

I have many software agents running as service and installed on users pc. Now I'd like to implement 4 features:

* sending commands to and form agents when needed - well, it seems that rabbitmq is built especially for that :)

* presence - I've done some mailing list digging and there seems to be at least 2 solutions: presence-exchange, or rabbitmq-external-exchange + writing own exchange (unfortunately I don't now erlang). I'd like to ask you if you have any experience with this code? Are they stable (esp. presence-exchagne)?

* forwarding tcp connections between agents and server. Here is my biggest doubt. I'd like to provide vnc access to computer with agents installed, but I cannot assume, that they will be reachable via tcp/ip (ie.: they could be hidden behind some firewall with nat etc.). So I have following idea: I will make 2 consumers - first will be awainting for messages in agent, second will be running on server. Then, we agent connects it asks server to start listening on port X. If anything will connect to port X, then server will forward all data from this connection to agent - ang agent will make connection to vnc server on localhost:5900. From this point agent and server will be exchanging messages in both directions literally forwarding tcp data through using amqp messages for that. I understand, that this will have it's overhead, but I don't expect a lot of those connection - from my experience there will be few dozens of them simultanousely. I have hardware & network bandwith to handle the (not so big) load. But main question is - is rabbitmq good solution for such forwarding? What about latency? Any other problems that I don't see could arise?

* security. In this solution rabbitmq will be accessible from Internet (all agents needs to connect). This makes its own concerns, but first thing is - I'd like to limit, what agents could do. I don't want any agent with valid password and username do whatever they want - just limit them to subset of queues (ie.: mysystem.AGENTUUID.*), maybe give them write permission to set of exchanges. I saw in documentation that it's possible - but do you think it's good idea - there potentially will be thousands of such rules (at least few per one agent, and at very begining I need to service at least 2000 user computer with agent installed!)?

I would be gratful for you advice :)

Grzegorz Marszałek
graf0 at post.pl

More information about the rabbitmq-discuss mailing list