<div><font><font face="tahoma,sans-serif">Hi,</font></font></div><div><font><font face="tahoma,sans-serif"><br></font></font></div><div><font><font face="tahoma,sans-serif">I am trying to write a custom exchange type in which when bound to another exchange, it will change the message so that the final queue will also know which path the message were routes to.</font></font></div>

<div><font><font face="tahoma,sans-serif"><br></font></font></div><div><font><font face="tahoma,sans-serif">For example, A is bound to B so that message published to A will be routed to B and come to any queue bound to B. But when it&#39;s turn for B to route to its queue, it will either change the exchange_name of the #basic_message, or add B to a path tuple in the headers.</font></font></div>

<div><font><font face="tahoma,sans-serif"><br></font></font></div><div><font><font face="tahoma,sans-serif">However, I failed to do such a thing. My custom exchange has the route/2 as following:</font></font></div><div><font><font face="tahoma,sans-serif"><br>

</font></font></div><div><font><font face="tahoma,sans-serif"><div>route(X=#exchange{ name = XName},</div><div>      D=#delivery{ message = #basic_message{exchange_name = XName }}) -&gt;</div><div>    Exchange = exchange_type(X), % a helper to detect the actual exchange type, default to topic</div>

</font></font><div>    Exchange:route(X, D);</div></div><div><br></div><div><div>route(X=#exchange{ name = XName},</div><div>      D=#delivery{ msg_seq_no = MsgSeqNo,</div><div>        message = BasicMsg = #basic_message{ </div>

<div>            exchange_name = Followee,</div><div>            routing_keys = [Key], content = Content }}) -&gt;</div></div><div><br></div><div>    % Change the delivery here to NewDelivery</div><div>    Exchange = exchange_type(X),</div>

<div>    Exchange:route(X, NewDelivery).</div><div><br></div><div>I thought that when the message is published to the first exchange, it will find all the bound destinations, including the bound exchange, and route message there. When I debug it, I see that the second route/2 function clause is also called, so the message should be routed and delivered to any bound queues/exchanges of the second exchange. I also make sure to change the message id, message sequence number to make sure I have a total different message.</div>

<div><br></div><div>However, the queue bound to the second exchange only receives one message from the first exchange.</div><div><br></div><div>Can anybody help me with this?</div><font><font face="tahoma,sans-serif"><div>

<font><font face="tahoma,sans-serif"><br></font></font></div><br clear="all"></font></font>Sincerely,<br><br><div><br>Son Tran-Nguyen</div><br>