<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:12pt"><div>Dear RabbitMQ users and developers,</div><div>We are starting now implementation of one project for an enterprise system where we replace Oracle Tuxedo by an open source solution. There are implemented more Tuxedo servers in C, which can receive signals and messages from Tuxedo queues and direct calls as well. The servers are also monitored and controlled by Tuxedo. We are implementing proof-of-concept by migrating original code and replacing original Tuxedo calls with RabbitMQ functionality. We use librabbitmq (rabbitmq-c client library of AMQP). <br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">And I have several questions:</div><div
 style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">1. When we use routing messages through a custom exchange and bindings, and if there is some error, for instance wrong queue name or wrong routing key given, is it possible to obtain some error response from RabbitMQ server? Up to now what I did testing, the messages were just silently lost.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">2. We are thinking about having clients and producers controlled by special set of queues. So one
 component will listen on two or more queues. One will deliver business process messages which carry data processing information, but other queue will carry control commands. This control queue must have higher priority even when main business process queue is full of messages. I did the following test:</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"> /* Initialization of consuming properties - consumer priority */</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">  amqp_table_t
 queue_table;<br>  amqp_table_entry_t  entry;<br>  entry.key = amqp_cstring_bytes("x-priority");<br>  entry.value.kind =  AMQP_FIELD_KIND_U32;<br>  entry.value.value.u32 = 1;<br>  queue_table.num_entries = 1;<br>  queue_table.entries = &entry;</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">/* Start listening on two queues */</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">  while (1) {<br>         
 amqp_basic_consume(conn, 1, amqp_cstring_bytes(queuename1), amqp_empty_bytes, 0, 0, 0, amqp_empty_table);<br>        die_on_amqp_error(amqp_get_rpc_reply(conn), "Consuming");<br><br>          amqp_basic_consume(conn, 1, amqp_cstring_bytes(queuename2), amqp_empty_bytes, 0, 0, 0, queue_table);<br>        die_on_amqp_error(amqp_get_rpc_reply(conn), "Consuming");</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">But when this consumer test was executed, the following error occured:</div><div style="color: rgb(0, 0, 0); font-size:
 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">queue2 x-priority: 1 <br>Consuming: a socket error occurred</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">When there was amqp_empty_table for both, it was consuming messages from both queues but in a random manner, sometimes even 4 messages from one and then three messages from the other. We need to have higher priority on the control queue.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;
 background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">Don't you have some experience or idea what should be changed to call the basic_consume correctly?</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">3. We appreciate very much that there is more verbose documentation of methods in rabbitmq-c. But I miss a little documentation of possible options for various structures, for instance the structure amqp_basic_properties_t, what are
 possible options for content_type, content_encoding etc. Where is most proper place to seek for this input arguments options?</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">Thank you very much for any advise. <br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">Kind regards</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">Jan
 Kianicka</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">AWST, Wien</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;">Austria</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"></div></div></body></html>