Queue (Queue) - áá
áºáẠááá¯á·ááá¯áẠRAM ááœáẠáá±áá¬ááœá²á·á
ááºážáá¯á¶ááẠáááºáá±á·áá»áºáá»á¬ážááᯠááá¯ážáá¬ážááŒá®áž áááºážááá¯á·áá¶á០áááá¹áá°áá»á¬ážááᯠááŒááºáá±ážááá·áº consumers (á
á¬ážáá¯á¶ážáá°áá»á¬ážá¡ááœááº)á Queue áá«áá¬ááá¯ááºá
á¬ážááŒá¯ááẠstate ááŒáá·áº (áááºáá±á·áá»áºáá»á¬ážááᯠáááºážááá¯á·ááá¯ááºááá¯áẠááááºážáááºážáá¬ážááá¯ááºáááº)á áááºážá
á® áááá ááẠ1Mb ááá·áºá¡áá ááŒá¬ááŒáá·áºááá¯ááºáááºá
Binding (binding) - áááºážá
á®áá¬ážáá±á¬á
á¬ááá¯áá»á¬ážáá¶ áááºááẠá
á®áááºážáá¬ážáá±á¬ áááºáá±á·áá»áºááá¯á· ááœá¬ážááá·áºáááºááᯠááœá±áá²áá°á¡á¬áž ááŒá±á¬ááŒáá±á¬ á
ááºážáá»ááºážá
áá¬áááá¬
- RabbitMQ á¡ááá¯ááºáž 4á áááºáá±á·áá»áºáá»á¬ážááŸáá·áºáá±á¬ááºáá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážááŒááºážá
- RabbitMQ á¡ááá¯ááºáž 5- áá¯ááºáá±ááŒááºážááŸáá·áº á¡áá¯á¶ážááŒá¯ááŒááºáž áááºáá±á·áá»áºá áœááºážáá±á¬ááºáááº
- RabbitMQ á¡ááá¯ááºáž 6á á¡áááºážáá»á¯ááºááŸáá·áº áá±á«áºááŒá¬áž áá±á¬áºáá»á°ážáá»á¬ážá ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááº
- RabbitMQ á¡ááá¯ááºáž áá áá»áááºáááºááŸá¯ááŸáá·áº Chanel á¡ááŒá±á¬ááºážá¡áá±ážá áááº
- RabbitMQ á¡ááá¯ááºáž áá .NET ááœáẠRabbitMQ
- RabbitMQ á¡ááá¯ááºáž áá á á±á¬áá·áºááŒáá·áºáá±á·áá¬ááŒááºážá
áá¬áá®áááºážá á®ááŒááºážá
á¡áááºá áááºážá
á®ááŒááºážááᯠááá·áºáááºáá±á¬ááºááŒáá·áº áááºáá®ážáá«á autoDeleteááá¯á·ááá¯áá»áŸáẠááá¯ááá¯á·áá±á¬ áááºážá
á®ááŒááºážááẠá
áœááºážáááºááᯠáááŸááááºá ááá·áºááá¯ááºááẠá¡ááá¯á¡áá»á±á¬áẠáá»ááºáá«á. ááááááá¯ááºážááá·áº áá»áááºáááºáá±á¬á¡áá«ááœáẠááá¯áá²á·ááá¯á·áá±á¬ áááºážá
á®áá»á¬ážááᯠáá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áááºáá®ážááŒááŒá®áž áá¯á¶ážá
áœá²áá°áá»á¬ážá¡á¬ážáá¯á¶áž á¡áááºááŒááºááœá¬ážáá±á¬á¡áá«ááœáẠáá»ááºáá
áºááŒáááºá
á¡áááºá áááºážá
á®ááŒááºážááᯠááá·áºáááºáá±á¬ááºááŒáá·áº áááºáá®ážáá«á exclusiveááŒá®ážáá±á¬á· á¡á²ááá¯áááºážá
á®áááºá áá¯á¶ážá
áœá²áá°áá
áºáŠážáááºážááá¯áᬠáá»áááºáááºááœáá·áºááŒá¯áááºá áá»ááºáááºááááºááœá¬ážáá«á áá»ááºáá«áááºá áá»ááºáááºáááááºááá»ááºáž áááá¯ááºážááá·áºááẠáá»áááºáááºááŸá¯ááŒááºáá±á¬ááº/áá»áááºáááºááá¯ááºáá±á¬áºáááºáž áá°áá®áá±á¬áá»áááºáááºááŸá¯á¡ááœááºážáá¬ááŒá
áºáááºá ááá·áºáááºáá»ááºááŸáááẠexclusive ááá¯á·áá±á¬áẠparameter ááá¯áááºááŸááºáá¬ážáááºá autoDelete á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯áááŸááá«á
á¡ááºá¹áá«áááºáá»á¬áž:
- áá±ááá¯áá»áááºáááºááŸá¯ ááŒááºáá±á¬ááºááœá¬ážáá«áá áá¯á¶ážá áœá²áá°áá¶ ááá±á¬ááºááŸááá±ážáá±á¬ áááºáá±á·áá»áºáá»á¬áž áá¯á¶ážááŸá¯á¶ážáá«áááºá
- ááŒá
áºá
ááºááá¯áááºáááºážááá¯ááºáááºá
binding churn. áááºážá á®ááá¬ážáá»á¬áž áááºáá®áž/áá»ááºááẠáá¯ááºáá±á¬ááºááŸá¯ á¡áá±á¡ááœááºááŸáá·áº á ááºážááŸá±á¬ááºááŸá¯áá»á¬ážááẠá¡ááœááºááŒá®ážáá¬ážáá±á¬ áááºááá¯ážáá»á¬áž áá±á¬ááºááŸááá±á¬á¡áá« ááŒá áºá áẠááŒá áºáá±á«áºáááºá á¡á á¯á¡áá±ážáá¯ááºááœááºá ááá¯ááá¯á·áá±á¬ áááºáááºá á®ážáááºážááŸá¯ááẠnode á¡á¬ážáá¯á¶ážááᯠáá»á¶á·ááŸá¶á·á á±ááŒá®áž ááŒá®ážáá¬ážáá±á¬áááºááᯠáááºáá®ážáá±ážáááá·áºáááºá á á¬áááºážááœááºážááŸá¯á¡áá±á¡ááœááºááᯠááááºážáá»á¯ááºááŒááºážááŒáá·áº á€áá¯ááºáááºážá ááºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºááá¯ááºáááºá
á¡áááºáááŒááºáááºážá á®ááŒááºážá
á¡áááºá áááºážá
á®ááŒááºážááᯠááá·áºáááºáá±á¬ááºááŒáá·áº áááºáá®ážáá«á durableááŒá®ážáá±á¬á· á¡á²ááá¯áááºážá
á®áááºá áááºážáá¡ááŒá±á¡áá±ááá¯ááááºážááááºážáááºá áá¬áá¬/ááœá²á
á¬ážááᯠááŒááºáááºá
áááºááŒá®ážáá±á¬áẠááŒááºáááºááá°áááºá á¡áááá·áºááá±á«áºááá»ááºáž á€áááºážá
á®ááẠááŸááá±áá«áááºá Queue.Delete.
á¡ááœááºáááá¯ááºáá±á¬áááºážá á®
HA áááºážá á®áá»á¬ážááẠRabbitMQ á¡á á¯á¡áá±ážáááºáááºážáá»áẠááá¯á¡ááºáááºá á¡á á¯á¡áá±ážáá¯ááºááœááºá áá²ááŸááºáá°áá»á¬ážá áááºážá á®áá»á¬ážá áá»áááºáááºááŸá¯áá»á¬ážááŸáá·áº á á¬ážáá¯á¶ážáá°áá»á¬ážááá¯ááºáᬠá¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠnode áá»á¬ážá¡á¬ážáá¯á¶ážááá¯á· áá°ážáá°ááœá¬ážáá«áááºá
áááºáá±á·áá»áºááᯠHA áááºážá á®ááá¯á· ááœáŸáá·áºáááºáá±á¬á¡áá«á áááºážááᯠHA áááºážá á®ááŸáá·áº áááºááá¯ááºááá·áº node ááá¯ááºážááœáẠááááºážáááºážáá¬ážáááºá node áá áºáá¯ááœáẠáááºáá±á·áá»áºááᯠá á¬ážáá¯á¶ážááŒá®ážáááºááŸáá·áºá á¡ááŒá¬áž node áá»á¬ážááœáẠáááºáá±á·áá»áºá áááá¹áá°á¡á¬ážáá¯á¶ážááᯠáá»ááºáá áºáá«áááºá
HA áááºážá á®ááŒááºážááᯠá¡á á¯á¡áá±ážáá áºáá¯ááŸá node áá»á¬ážá¡á¬ážáá¯á¶ážááá¯á· ááá¯á·ááá¯áẠnode áá áºáá¯áá»ááºážá á®ááá¯á· ááŒáá·áºáá±ááá¯ááºáááºá

á¡ááºá¹áá«áááºáá»á¬áž:
- HA áááºážá á®ááŒááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠá áœááºážáá±á¬ááºáááºá¡ááœáẠááŒá áºáááºááŒá áºá á±áááºá HA áááºážá á®áá áºáá¯áá²ááá¯á· áááºáá±á·áá»áºáá áºáá¯ááᯠááá·áºáá±á¬á¡áá« ááá¯á·ááá¯áẠHA áááºážá á®á០áááºáá±á·áá»áºááᯠá á¬ážáá¯á¶ážáá±á¬á¡áá«á RabbitMQ ááẠnode á¡á¬ážáá¯á¶ážááœáẠáá°ážáá±á«ááºážáá±á¬ááºááœááºáááẠ(áá¯á¶ááŸááºá¡á¬ážááŒáá·áº 2-3 node áá»á¬ážááẠáá¯á¶áá±á¬ááºáááº)
áááºážá á®ááŒááºážááᯠáááºáá®ážááŒááºážá
áááºážá
á®ááẠsynchronous ááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážáá¬ážáááºá RPC áá¬áá¬ááᯠáá±á¬ááºážááá¯áá«á áá±á¬ááºážááá¯ááŸá¯áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯ Queue.Declareááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº áá±á«áºáááº-
- áááºážá á®á¡áááº
- á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá»á¬áž
á¡áá¯á¶ážááŒá¯ááŒá®áž áááºážá á®ááŒááºážááᯠáááºáá®ážááŒááºáž á¥ááᬠ:
// ...
channel.QueueDeclare(
queue: "my_queue",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null
);
// ...queue- áá»áœááºá¯ááºááá¯á·áááºáá®ážááá¯áá±á¬ áááºážá á®áá¡áááºá á¡áááºááẠáá®ážááá·áºááŒá áºáááẠááŒá áºááŒá®áž áááºážá á®á á áá áºá¡áááºááŸáá·áº ááá¯ááºáá®ááŸá¯ áááŸáááá¯ááºáá«ádurable- ááŸááºáá»áŸáẠáááºážá á®áá«áááºá áááºáááŒááºáááºááá¯ááááºážááááºážáá«á áá¬áá¬/ááœá²á á¬áž ááŒááºáááºá áááºááŒá®ážáá±á¬áẠááŒááºáááºááá°áááºáexclusive- ááŸááºáá«áá áááºážá á®ááẠáá¯á¶ážá áœá²áá°áá áºáŠážáááºážááá¯áᬠáá»áááºáááºááœáá·áºááŒá¯áá«áááºáautoDelete- ááŸááºáá»áŸáẠáááºážá á®ááŒááºážááẠá áœááºážáááºááᯠáááŸááááºá ááá·áºááá¯ááºááẠá¡ááá¯á¡áá»á±á¬áẠáá»ááºáá«áarguments- ááœá±ážáá»ááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºááœáẠá¡áá±ážá áááºááᯠáááºáááºáá±á¬áºááŒáá«áááºá
á¡ááŒááºážááœá¬ážááŸá¯áá»á¬áž
x-message-ttl(x-message-time-to-live) â áááºáá±á·áá»áºáááºáááºážáá¯ááºáá¯á¶ážáá»áááºááᯠáá®áá®á áá¹ááá·áºá¡ááœááºáž áááºááŸááºááœáá·áºááŒá¯áááºá á¡áááºá áááºážá á®ááŒááºážááᯠá¡ááŒá±á¬ááºážááŒáá»ááºáááºááá¯áž áááºááŸááºááŸá¯ááŒáá·áº áááºáá®ážáá«áx-message-ttláá«ááᯠá¡á²áá®ááᯠáááºážá á®áá±áááá·áºáááºá áááºáááºážááœááºá á¬áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáááºáá¯ááºáá«á. á¡ááŒááºážá¡áá¯á¶áá áºáá¯ááááºááá¯ážááᯠáááºááŸááºááŒááºážáx-message-ttlá€áááºážá á®ááŸá á á¬ááá¯á¡á¬ážáá¯á¶ážá¡ááœáẠá¡áá»á¬ážáá¯á¶ážá¡áááºááᯠáááºááŸááºáááºá ááá¯ááá¯á·áá±á¬ áááºážá á®ááŒááºážááᯠáááºáá®ážááŒááºážá áá±ááºááá®áá±á¬á·áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºáá¶ááá°ááŒááºážá០áá¬ážáá®ážááá¯ááºáááºááŒá áºáááºá. áááºážááᯠá¡áá»áááºááŸáá·áºáá áºááŒá±ážáá® á áá áºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááŒááºážááá¯áá¬ážáá±á¬á á¬áá»á¬ážá¡ááœáẠáá²ááŸááºáá±ážááá·áºáááºážá á®ááᯠáááºááŸááºáá«áá á¡ááŒá±á¬ááºážááŒáá»ááºáááºááá¯ážááᯠáááºááŸááºáá«áx-message-ttlááá¯á·áá±á¬áẠá€áááºážá á®ááŸá ááŒááºážáááºáá¬ážáá±á¬ á á¬ááá¯áá»á¬áž áááºáááºážáá áºáá¯á áááºáááá·áºáááºá.x-expiresâ áááºážá á®ááŒááºážááá¯áá»ááºááŒá®ážáá±á¬áẠáá®áá®á áá¹ááá·áºá¡ááœááºáž áááºááá¯ážááᯠáááºááŸááºáááºá á á¬áááºážááœááºážáá°áááŸááá»áŸáẠáááºážá á®ááá¬ážááẠáááºáááºážáá¯ááºáá¯á¶ážááá¯ááºáááºá áááºážá á®ááœáẠá á¬áááºážááœááºážáá°áá»á¬ážááŸááá«áá á á¬áááºážááœááºážáá°á¡á¬ážáá¯á¶áž áá±á«áºááá¯ááá·áºá¡áá«ááœáẠáááºážááᯠá¡ááá¯á¡áá»á±á¬áẠáá»ááºááá¯ááºáá«áááºáBasic.Cancelááá¯á·ááá¯áẠá¡áááºááŒááºáá«á áááºážá¡á¬áž áá±á¬ááºážááá¯ááŸá¯áááŸááá«á áááºážá á®ááááºáááºážááẠáááºáááºážáá¯ááºáá¯á¶ážááá¯ááºáááºáBasic.Get. ááá¯ááºáá«áá áá áºáááºáá¬áááºáááºá áááºááŸááááºááá¯ážááᯠáá¯áááá¯á· ááŒááºáááºáááºááŸááºáá¬ážááŒá®áž áááºážá á®á¡á¬áž á¡ááá¯á¡áá»á±á¬ááºáá»ááºáááºááá¯ááºáá«á ááá¯á·á¡áá° áááºážá á®ááŒááºážááᯠáááºážááááºáááºážáá¯ááºáá¯á¶ážááŒá®ážáá±á¬áẠáááºáá»áŸááŒááºááŒááºáááºááŸá¬ážááŒá±á¬ááºáž á¡á¬ááá¶áá»ááºáááŸááá«á.x-max-lengthâ áááºážá á®ááœáẠá¡áá»á¬ážáá¯á¶ážáááºáá±á·áá»áºá¡áá±á¡ááœááºááᯠáááºááŸááºáááºá áááºážá á®áá±ááá·áº áááºáá±á·áá»áºá¡áá±á¡ááœááºááẠá¡áá»á¬ážáá¯á¶ážá¡áá±á¡ááœááºááẠáá»á±á¬áºááœááºáá±áá«áá á¡áááºá¡ááŒá®ážáá¯á¶ážá á¬áá»á¬ážááᯠáá»ááºáá áºáááº

x-max-lenght-bytesâ áááºážá á®ááŸá á á¬ááá¯áá»á¬áž áá±ážáá±á¬ááºááŸá¯á á¡áá»á¬ážáá¯á¶ážááœáá·áºááŒá¯ááá¯ááºáá±á¬ á á¯á á¯áá±á«ááºážá¡ááœááºá¡á á¬ážááᯠáááºááŸááºáááºá áááºááŸááºáááºááá¯ážáááºáá»á±á¬áºááœááºáá«á (áááºáá±á·áá»áºááá±á¬ááºáááºáá¯ááºáá±ááŸá¯á¡ááœááºáž áááºážá á®ááŒáá·áºááœá¬ážáááº)á ááŸá±ážá¡áá»áá¯á¶ážáááºáá±á·áá»áºáá»á¬ážááᯠáá»ááºáá áºáááºx-overflowâ áááºážá á®ááŸá¯áá áºáᯠááŒáá·áºáá»áŸá¶áá¬áá±á¬á¡áá« á¡ááŒá¯á¡áá°ááᯠááŒááºáááºáááºááŸááºááẠá€á¡ááŒááºážá¡áá¯á¶ááᯠá¡áá¯á¶ážááŒá¯áááºá áááºááá¯ážááŸá áºáá¯áááŸáááá¯ááºáááº-drop-head(áá°ááááºááá¯áž) ááŸáá·áºreject-publish. áááºááœá±ážáá»ááºáá«ádrop-headááá¯á·áá±á¬áẠááŸá±ážá¡áá»áá¯á¶áž áááºáá±á·áá»áºáá»á¬ážááᯠáá»ááºááá¯ááºáá«áááºá áááºááœá±ážáá»ááºáá«áreject-publishááá¯á·ááá¯áá»áŸáẠáááºáá±á·áá»áºáááºáá¶ááŒááºážá¡á¬áž áááºááá¯ááºážáááºááŒá áºáááºáx-dead-letter-exchangeâ áá±áá¹áááŒááºáááá¯á·áá±á¬ ááŒááºážáááºáá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠáá²ááŸááºááẠáááºááŸááºáá±ážáááºáx-dead-letter-routing-keyâ ááŒááºážáááºáá¶ááá±á¬áááºáá±á·áá»áºáá»á¬ážá¡ááœáẠááœá±ážáá»ááºááá¯ááºáá±á¬áááºážááŒá±á¬ááºážááŒáá±á¬á·ááᯠáááºááŸááºáá±ážáááºáx-max-priorityâ á¡áá»á¬ážáá¯á¶ážáŠážá á¬ážáá±ážáááºááá¯áž 255 (RabbitMQ áá¬ážááŸááºáž 3.5.0 ááŸáá·áºá¡áááº) ááŸááá±á¬ áááºážá á®áá áºáá¯ááœáẠáŠážá á¬ážáá±áž á á®ááŒááºážááᯠáá¯ááºáá±á¬ááºáá±ážáááºá áá¶áá«ááºááẠáááºážá á®ááŒááºážááᯠáá¶á·ááá¯ážáá±ážááá·áº á¡áá»á¬ážáá¯á¶ážáŠážá á¬ážáá±ážááᯠáááºááŸááºáááºá á¡ááŒá±á¬ááºážááŒáá»ááºááᯠááááºááŸááºáá«á áááºážá á®ááẠáááºáá±á·áá»áºáŠážá á¬ážáá±ážááŸá¯ááᯠáá¶á·ááá¯ážáááºááá¯ááºáá«áx-queue-mode- áááºážá á®áááºááá·áºá¡á¬ážááœáŸá²ááŒá±á¬ááºážáááºááœáá·áºááŒá¯áááºá áá»ááºážáááá±á¬áá¯ááº. á€áá¯ááºááœáẠáááºááá¯ááºááá»áŸ áááºáá±á·áá»áºáá»á¬ážááᯠáá áºááºáá±á«áºááœáẠááááºážáááºážáá¬ážáááºááŒá áºáááºá RAM á¡áá¯á¶ážááŒá¯ááŸá¯ áááºážáá«ážáá«áááºá ááááºááŸááºáá¬ážáá«á áááºáá±á·áá»áºáá»á¬ážááᯠáááºááá¯ááºááá»áŸá¡ááŒááºáá¯á¶ážáá±ážááá¯á·ááẠáááºážá á®ááẠáááºáá±á·áá»áºáá»á¬ážááᯠááŸááºáá¬ááºááœáẠááááºážáááºážáááºááŒá áºáááºáx-queue-master-locator- á¡áááºá áá»áœááºá¯ááºááá¯á·ááœáẠá¡á á¯á¡áá±ážáá áºáá¯ááŸááá«áá áá¬á áá¬áááºážá á®ááᯠáá»áœááºá¯ááºááá¯á· áááºááŸááºááá¯ááºáááºáx-ha-policyâ HA áááºážá á®ááŸá¯áá»á¬ážááᯠáááºáá®ážáá¬ááœáẠá¡áá¯á¶ážááŒá¯ááŒá®áž áááºáá±á·áá»áºá¡á¬áž node áá»á¬ážáá áºáá»áŸá±á¬áẠáááºááá¯á·ááŒáá·áºáá±áááºááᯠáá¯á¶ážááŒááºáááºá áááºááá¯ážáááºááŸááºáá¬ážáááºallááá¯á·áá±á¬áẠáááºáá±á·áá»áºááᯠnode á¡á¬ážáá¯á¶ážááœáẠááááºážáááºážáááºááŒá áºáááºá áááºááá¯ážáááºááŸááºáá¬ážáááºnodesááá¯á·áá±á¬áẠáááºáá±á·áá»áºááᯠá¡áá»áá¯á·áá±á¬ á¡á á¯á¡áá±ážáá»á¬ážáá±á«áºááœáẠááááºážáááºážáá¬ážáááºááŒá áºáááºáx-ha-nodesâ áááºááŸááºáá¬ážáá±á¬ áááºážá á®áá áºáᯠááá¯ááºááá¯ááºááá·áº áá¯á¶ááŸááºáá»á¬ážááᯠáááºááŸááºáááºáHA

áááºážá
á®áá±áá»áŸáẠááŒá
áºááá¯ááºá¡á±á¬ááºááá¯á·áá±á¬áẠserver ááẠclient ááᯠsynchronous áá±ážááá¯á·áááá·áºáááºá RPC á¡ááœá± Queue.DeclareOk. áá°áááºážááŒá®ážá០áááŒá
áºááá¯ááºáá±á¬ (áá±á¬ááºážááá¯ááŸá¯ááᯠááŒááºážááá¯áá²á·áá«áááºá Queue.Declare), á¡ááá¯áá« áá»ááºáááºááᯠááááºáá«áááºá server ááᯠcommand ááᯠá¡áá¯á¶ážááŒá¯ Channel.Close ááŸáá·áº client áááºááŒáœááºážáá»ááºáá
áºáá¯ááááá·áºáááºá á¡ááŸá¬ážáá¯ááºááŸáá·áº áááºážááá±á¬áºááŒáá»ááºáá«áááºáááºááŒá
áºáááºá
áááááá«á Queue.Declare á¡áá¬ážáá°áá±á¬ááºáá»á¬ážááŸáá·áºá¡áá° á€áááºážá
á®ááœááºááá¯ááºážáá¶á·áá¬ážáá±á¬á
á¬ááá¯á
á¯á
á¯áá±á«ááºážá¡áá±á¡ááœááºááŸáá·áº áááºážááá¯á
á¬áááºážááœááºážáá¬ážááá·áºá
á¬ážáá¯á¶ážáá°á
á¯á
á¯áá±á«ááºážá¡áá±á¡ááœááºáá²á·ááá¯á·áá±á¬ á€áááºážá
á®áá¡áá¯á¶ážáááºáá±á¬á¡áá»ááºá¡áááºáá»á¬ážááᯠááŒááºáá±ážáá«áááºá
áá±á«áºááá¯á Queue.Declare ááá¯á¡ááºáá±á¬á¡ááœáá·áºá¡áá±ážáá»á¬ážááᯠáá±ážá¡ááºááŒááºážáááŒá¯áá±á¬ á¡áá¯á¶ážááŒá¯áá°áá
áºáŠážá á¡áá±á¬ááºá¡áá¬ážáá»á¬ážá¡á±á¬ááºááœáẠáá»ááºáááºááᯠááááºáá«áááºá command ááᯠá¡áá¯á¶ážááŒá¯ Channel.Close ááŸáá·áº client áááºááŒáœááºážáá»ááºáá
áºáá¯ááááá·áºáááºá error code áá«áááºáá«áááºá áááºážááá±á¬áºááŒáá»ááºá
áááºážá á®ááŒááºážááᯠ>= 10 á áá¹ááá·áºááŒá¬ áááºáá¬ážááŒá®ážáá±á¬ááºá hibernation mode ááá¯á·ááœá¬ážáááºáááºážá á®ááœáẠGC ááŒá áºáá±á«áºá á±ááŒá®áž ááá¯áááºážá á®á¡ááœáẠááá¯á¡ááºááá·áº áááºááá¯áá®ááᯠáááááá¬áᬠáá»á±á¬á·áá»á á±áááºá
GUI ááŸáá áºááá·áº áááºážá á®ááŒááºážááᯠáááºáá®ážááŒááºážá
á
á®áá¶ááá·áºááœá²áá±ážá¡ááœá²á·ááá¯á· ááœá¬ážáá«á RabbitMQ á¡áá¯á¶ážááŒá¯áá°á¡á±á¬ááºááŸá¬ guest (á¡áá¯á¶ážááŒá¯áá°á¡áááº- guest ááŸáá·áº á
áá¬ážááŸááº- guest) á¡áá¯á¶ážááŒá¯áá°ááᯠáááááŒá¯áá«á guest localhost ááŸáᬠáá»áááºáááºááá¯ááºáááºá áá² áááºááºááᯠááœá¬ážááŒáá¡á±á¬áẠQueues áá±á«áºááœááºááá
áºááŸáááºáá«á Add a new queue. áá¯ááºááá¹áááá»á¬ážááá¯ááŒáá·áºáá«

ááá¯á¡ááºáá±á¬ data á¡á¬ážáá¯á¶ážááᯠááŒáá·áºááœááºážááŒá®ážáááºááŸáá·áº ááŸáááºáá«á Add queuesá áááºážá
á®ááẠá¡ááœá±ááœá±á
á¬áááºážááœáẠáá±á«áºáá¬áááá·áºáááºá

áááºážá
á®ááá·áºá¡áááºááᯠááŸáááºááŒááºážááŒáá·áº áááºážáá¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠááŒááááºááŒá
áºáááºá á€áá±áá¬ááœáẠáááºááẠáá²ááŸááºááŒááºážááŸáá·áº áááºážá
á®ááŒááºážááŒá¬ážááœáẠá
ááºážááŸá±á¬ááºááŸá¯ááᯠáááºááŸááºááá¯ááºááŒá®áž á
á¬áááºážááᯠááŒáá·áºááŸá¯áá«á consumersáááºáá±á·áá»áºáá»á¬ážááᯠáá¯ááºáá±/áááºáá¶ááŒááºážá áááºážá
á®ááŒááºážááᯠáá»ááºááŒá®áž á
á¬áááºážááá¬ážáá»á¬ážááᯠááŒáá·áºááŸá¯áá«á
Binding áááºáá®ážááŒááºážá
á
ááºážááŸá±á¬ááºááŒááºážááᯠsynchronous áá¯á¶ážááŒá®áž áááºáá®ážáá¬ážáááºá RPC áá¬áá¬ááᯠáá±á¬ááºážááá¯áá«á áá±á¬ááºážááá¯ááŸá¯áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯ Queue.Bindááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº áá±á«áºáááº-
- áááºážá á®á¡áááº
- áá²ááŸááºááœáá¯áá·áºá¡áááº
- á¡ááŒá¬ážááœá±ážáá»ááºá áá¬áá»á¬áž
á ááºážááŸá±á¬ááºááŒááºážááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážááŒááºáž á¥ááᬠ:
//...
channel.QueueBind(
queue: queueName,
exchange: "my_exchange",
routingKey: "my_key",
arguments: null
);
//...queue- áááºážá á®á¡áááºexchange- ááœá±áá²ááŸááºáá°áá¡áááºroutingKey- áááºážááŒáá±á¬á·arguments- ááœá±ážáá»ááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬áž

á
ááºážááŸá±á¬ááºááŸá¯áá
áºáá¯áááºáá®ážáá±áá»áŸáẠááŒá
áºááá¯ááºá¡á±á¬ááºááá¯á·áá±á¬áẠserver ááẠclient ááᯠsynchronous áá±ážááá¯á·áááá·áºáááºá RPC á¡ááœá± Queue.BindOk.
GUI ááŸáááá·áº Binding áááºáá®ážááŒááºážá
á
á®áá¶ááá·áºááœá²áá±ážá¡ááœá²á·ááá¯á· ááœá¬ážáá«á RabbitMQ á¡áá¯á¶ážááŒá¯áá°á¡á±á¬ááºááŸá¬ guest (á¡áá¯á¶ážááŒá¯áá°á¡áááº- guest ááŸáá·áº á
áá¬ážááŸááº- guest) á¡áá¯á¶ážááŒá¯áá°ááᯠáááááŒá¯áá«á guest localhost ááŸáᬠáá»áááºáááºááá¯ááºáááºá áá² áááºááºááᯠááœá¬ážááŒáá¡á±á¬áẠQueues áááºážá
á®ááŒááºážááᯠááŸáááºáá«á my_queue. á¡ááá¯ááºážá¡ááœááºáá»á¬ážááá¯ááŒáá·áºáá«á bindings:

ááá¯á¡ááºáá±á¬ data á¡á¬ážáá¯á¶ážááᯠááŒáá·áºááœááºážááŒá®ážáááºááŸáá·áº ááŸáááºáá«á Bindá
ááºážááŸá±á¬ááºááŸá¯ááᯠáá±áá°áá»á
á¬áááºážááœáẠáá±á¬áºááŒáá«áááº-

áá¯ááº
á€ááá¹áááœáẠáá»áœááºá¯ááºááá¯á·ááẠá á¬ááŒáá·áºááá¯ááºáá áºáá¯áááºáá±á¬ááºáááºáá²á·ááá¯á· C# áá¯ááºááŒáá·áº á ááºážááŸá±á¬ááºááŒááºážááᯠáá±á¬áºááŒáá«áááºá áá¶áá°áá»ááºá¡ááœáẠá¡áá¯á¶ážáááºáááºáᯠááá¯ááá¯ááºáááºá
public interface IQueue
{
string Name { get; }
/// <summary>
/// ÐÑлО ÑÑÑаМПвОÑÑ true, ÑП queue бÑÐŽÐµÑ ÑвлÑÑÑÑÑ Ð¿ÐŸÑÑПÑММÑÐŒ.
/// ÐМа бÑÐŽÐµÑ Ñ
ÑаМОÑÑÑÑ ÐœÐ° ЎОÑке О ÑЌПжеÑ
/// пеÑежОÑÑ Ð¿ÐµÑезапÑÑк ÑеÑвеÑа/бÑПкеÑа.
/// ÐÑлО зМаÑеМОе false, ÑП queue ÑвлÑеÑÑÑ Ð²ÑеЌеММПй О бÑÐŽÐµÑ ÑЎалÑÑÑÑÑ,
/// кПгЎа ÑеÑвеÑ/бÑÐŸÐºÐµÑ Ð±ÑÐŽÐµÑ Ð¿ÐµÑезагÑÑжеМ
/// </summary>
bool IsDurable { get; }
/// <summary>
/// ÐÑлО зМаÑеМОе ÑавМП true, ÑП
/// ÑÐ°ÐºÐ°Ñ ÐŸÑеÑÐµÐŽÑ Ð±ÑÐŽÐµÑ ÑазÑеÑаÑÑ Ð¿ÐŸÐŽÐºÐ»ÑÑаÑÑÑÑ
/// ÑПлÑкП ÐŸÐŽÐœÐŸÐŒÑ consumer-Ñ
/// </summary>
bool IsExclusive { get; }
/// <summary>
/// ÐвÑПЌаÑОÑеÑкПе ÑЎалеМОе.
/// ÐÑеÑÐµÐŽÑ Ð±ÑÐŽÐµÑ ÑЎалеМа, кПгЎа вÑе клОеМÑÑ ÐŸÑÑПеЎОМÑÑÑÑ.
/// </summary>
bool IsAutoDelete { get; }
/// <summary>
/// ÐеПбÑзаÑелÑМÑе аÑгÑЌеМÑÑ
/// </summary>
IDictionary<string, object> Arguments { get; }
}public class Queue : IQueue
{
public Queue(
string name,
bool isDurable = true,
bool isExclusive = false,
bool isAutoDelete = false,
IDictionary<string, object> arguments = null)
{
Name = name ??
throw new ArgumentNullException(name, $"{name} must not be null");
IsDurable = isDurable;
IsExclusive = isExclusive;
IsAutoDelete = isAutoDelete;
Arguments = arguments ?? new Dictionary<string, object>();
}
public string Name { get; }
public bool IsDurable { get; }
public bool IsExclusive { get; }
public bool IsAutoDelete { get; }
public IDictionary<string, object> Arguments { get; }
}public static class QueueMode
{
public const string Default = "default";
/// <summary>
/// ÐеМОвÑй ÑежОЌ. ÐеМОвÑй ÑежОЌ заÑÑÐ°Ð²ÐžÑ ÑПÑ
ÑаМÑÑÑ
/// как ЌПжМП бПлÑÑе ÑППбÑеМОй Ма ЎОÑке, ÑÑÐŸÐ±Ñ ÑЌеМÑÑОÑÑ
/// ОÑпПлÑзПваМОе ПпеÑаÑОвМПй паЌÑÑО
/// </summary>
public const string Lazy = "lazy";
}public interface IBinding
{
/// <summary>
/// ÐбЌеММОк, кПÑПÑÑй бÑÐŽÐµÑ ÑвÑзÑваÑÑÑÑ Ð¿ÑОвÑзкПй
/// </summary>
IExchange Exchange { get; }
/// <summary>
/// ÐлÑÑ ÐŒÐ°ÑÑÑÑÑОзаÑОО
/// </summary>
string RoutingKey { get; }
/// <summary>
/// ÐеПбÑзаÑелÑМÑе аÑгÑЌеМÑÑ
/// </summary>
IDictionary<string, object> Arguments { get; }
}public class Binding : IBinding
{
public Binding(
IExchange exchange,
string routingKey,
IDictionary<string, object> arguments)
{
Exchange = exchange;
RoutingKey = routingKey;
Arguments = arguments;
}
public IExchange Exchange { get; }
public string RoutingKey { get; }
public IDictionary<string, object> Arguments { get; }
}source: www.habr.com
