[rabbitmq-discuss] question on custom exchanges
Simon MacMullen
simon at rabbitmq.com
Fri Apr 1 10:31:10 BST 2011
On 31/03/11 20:21, Jon Brisbin wrote:
> Sorry for the bang-bang, scatter-shot nature of these questions,
> but...
>
> How would I go about creating resources that are unique to a given
> custom exchange? For example, if I have hostname and port parameters
> as arguments to my custom exchange, how can I manage a process that
> is unique to that exchange (because it connects to a possibly-unique
> combo of hostname and port) from my module?
>
> Do I construct some key based on vhost and exchange name and store a
> Pid in an ets table or something?
I don't know whether you still need answers based on your tweets last
night, but here goes. I've been working through some of the same issues
with the federation plugin. Also I hope I'm understanding your questions
correctly - let me know if not.
You should start your process up when the create() or recover()
callbacks are invoked. (create() means a new exchange was created while
Rabbit was running; recover() means Rabbit started up and found your
exchange in Mnesia).
In terms of associating a PID with your exchange, you could use ETS or
DETS but that won't be very wise around clusters. You could create an
Mnesia table or use process groups (pg2) and create a process group per
exchange. That's what I'm doing, but I have more than one process per
exchange.
> What is the lifecycle of a custom exchange module? Does it even have
> one?
The module itself doesn't, it's just callbacks.
Finally, I'm working on changing some of these APIs to fix some edge
cases that we're encountering, mostly around bindings. Once it's merged
I'll mail you again to let know where we ended up.
Cheers, Simon
--
Simon MacMullen
Staff Engineer, RabbitMQ
SpringSource, a division of VMware
More information about the rabbitmq-discuss
mailing list