ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π» ΠΏΡΠΈΠΌΠ΅Ρ amqp_rpc_sendstring_client, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΡΠΌΠΎΠΉ ΠΎΡΠ²Π΅Ρ Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
{
/*
set properties
*/
reply_to_queue = amqp_cstring_bytes("amq.rabbitmq.reply-to");
amqp_basic_properties_t props;
props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG |
AMQP_BASIC_DELIVERY_MODE_FLAG |
AMQP_BASIC_REPLY_TO_FLAG |
AMQP_BASIC_CORRELATION_ID_FLAG;
props.content_type = amqp_cstring_bytes("text/plain");
props.delivery_mode = 2; /* persistent delivery mode */
props.reply_to = amqp_bytes_malloc_dup(reply_to_queue);
if (props.reply_to.bytes == NULL) {
fprintf(stderr, "Out of memory while copying queue name");
return 1;
}
props.correlation_id = amqp_cstring_bytes("1");
/*
publish
*/
die_on_error(amqp_basic_publish(conn,
1,
amqp_cstring_bytes(exchange),
amqp_cstring_bytes(routingkey),
1,
0,
&props,
amqp_cstring_bytes(messagebody)),
"Publishing");
amqp_bytes_free(props.reply_to);
}
Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ Π½ΠΎΠ²ΡΠΉ amqp_rpc_sendstring_client Π½Π° ΠΌΠΎΠ΅ΠΌ rabbitmq-server 3.6.10, ΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
Consuming: server channel error 406h, message: PRECONDITION_FAILED - fast reply consumer does not exist
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ amqp_basic_consume
Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ amq.rabbitmq.reply-to
ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ!
ΠΈ Π΄Π°, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» amqp_basic_consume Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ amq.rabbitmq.reply-to. Π½ΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ PRECONDITION_FAILED. Ρ ΡΠΊΡΡΠ°Ρ ΠΏΠΎ ΡΠ΅ΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ?
ΠΠΉ, ΡΡ ΠΈΠΌΠ΅Π΅ΡΡ Π² Π²ΠΈΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ amqp_basic_consume ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ
Π‘ΠΠΠ‘ΠΠΠ!
ΠΡΠΈΠ²Π΅Ρ ΡΠ·ΡΠ½ΡΠΆ,
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π·Π΄Π΅ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΡ.
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΡΠ²Π΅ΡΠ°.
ΠΡΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Ρ ΠΏΠΎΠ΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π».
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ,
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
amqp_basic_consume
Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈamq.rabbitmq.reply-to
ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.Π‘ΠΌ. Https://www.rabbitmq.com/direct-reply-to.html