α’αα»ααα½ααααΈ α αΆα! αααα»αα
ααα
αααααααααααα
αα·ααααΆ-α―αααΆααααααα
ααααααΉαααααααα»αααΆααααααααααααΎααααΈαααααΌααα
ααΎ RabbitMQ
αα·αααααα½αα
αΌααα
αααα»αα’αα»ααΆαααααααΈα αα·αααΆαααααα·ααααΆαα
ααΆααΆαααΆαα·ααΆ
- RabbitMQ αααααααΈ 1. ααα ααααΈααααΎαα Erlang, AMQP αα·α RPC
- RabbitMQ αααααααΈ 2. ααΆααααααΉαα’αααΈααΆαααααΆααααααΌα
- RabbitMQ αααααααΈ 3. ααΆααααααΉαα’αααΈαα½α αα·αααΆαα α
- RabbitMQ αααααααΈ 4. ααΆααααααΉαα’αααΈααΆα αα·αααα»α
- RabbitMQ αααααααΈ 5α ααΆαααααα»ααα αα·αααΆαααααΎααααΆααααΆααααααΆαααααα·αααααΆα
- RabbitMQ αααααααΈ 6. αα·αααααΆαααΌαα αααααΌαα»ααα ααααααα·α Shovel
- RabbitMQ αααααααΈ 7. ααααααΆααααα’α·αα’αααΈααΆααααααΆαααα·ααααΆα Chanel
- RabbitMQ αααααααΈ 8. RabbitMQ αα αααα»α .NET
- RabbitMQ αααααααΈ 9. ααΆααααα½ααα·αα·ααα
ααααααα’αααΈ AMQP
AMQP (Advanced Message Queuing Protocol) ααΊααΆαα·ααΈααΆαααΎαα αα αααααΆαααααααΌαααΆααααΆααααΆαααΆαα»ααααααααα αααα·αααΆααΌαααααΆαααΊααΆααααααααααααΈαα½αα (α¬αααααα·ααΈα―αααΆααα) α’αΆα ααααΆααααααΌαααΆαααΆαα’αααΎα α·αααααΆαααααααα½ααααααΆα AMQP αααα’αα»ααααααΆααααααΌα αααα’αΆα ααΆααΆααΆαααΉααααααΌα α ααα αΆαααΆαααααΆααα·αααααα αα·αααΆαααααααααΆααααα ααααΆαα
αα·ααΈααΆα AMQP
ααααΆαααααααα·αααΈα
exchange
(α ααα»α ααααΆααααααΌαα¬ααααΆααααααΌα) - ααΆαααααΌαααΆαααααΎαα ααΆα α ααα»α ααααΆααααααΌα α ααα αΆαααΆα αα αααα»ααα½ααα½α α¬α αααΎαα ααΆα αααααΌαααΆααα αα½α ααα’ααααΎααΆααααααΆαααααααΆααααααΎα (binding
) αααΆαααΆαααα·ααα½αqueue
(αα½α) - αα ααΆαααααααααα·αααααααα ααΎααΆαα¬αααα»α RAM αααα αααααΆαα»ααααααααΆαααα ααΆα αα·ααααααα αααΆααα ααααααααΆαconsumers
(αααα’αααααααΎααααΆαα)binding
(ααΆαβα αβ) - α αααΆααβαα½αβααΆβ ααααΆααα ααα»α ααααΆααααααΌαααααααααααα½αααΆαααΆααααααα½αααα αΌααα αααα»α
αα·ααΈααΆαααααΎαααΆααα
ααΆαααΎ
ααααααα’αααΈ Erlang
ααΌααααααααααααααααααΊαα
αααα»αααααΆαααα
Erlang
αααααΎαα‘αΎαααααααα»αα αα»αEricsson
αα ααΆαααααααΆαααααααααααααΆα 1980 ααΆαααααααααααααααΆαα·αααααΆαααααα ααα αΆα αα·αα’ααα±αα ααααααα α»ααααααΆαααααααα·ααΈαααααΆαααΆαααααααααΎααΆα 99,999%αErlang
ααααΎαααα»αα§ααααΆα αααααααααα αα·ααααααα·ααΈααααΎα α§.ααααΆαααααααα WhatsApp ααα Facebook αα·ααααα»αααααα α‘α© ααΆααααΆααα»ααααΆα
ααααααα’αααΈ RabbitMQ
RabbitMQ
α’αα»αααα αα·αααααααααααααα·ααΈααΆα AMQP
.
αααα·αα
ααααααααααΌααααΎααΆααα
αααα»α RabbitMQ
ααΏαααΊ producer
(α’αααααααα»αααααααΆα) αα·αααααΎααΆααααααααΆαααα
αα½αααα ααΆααΆααα·α α αΎαααΆααΉαααΆαα α’αααααααα»αααααααΆααα·αααΉαααΆ ααΎααΆαααΉαααααΌαααΆααααααΌααα
ααΆαααα½αααΆαα½αααΆαααααααα
αααα»ααα αα·α α’αααααααα»αααααααΆαα’αΆα ααααΎααΆααα ααααααααααΌαααααΆααααα»αααααα αααααΆααα·αααα ααΆαααααΆααααααΌαααα½αααΆαααΆαααΈα’αααααααα»αααααααΆα α αΎααααααΆααα·αααα ααΆαααααΌααα½ααααα αα½αα ααΆαααααΆααααααΌαααααΌαααααΉαα αααΆααααΈα’αααΈαααααααΌαααααΎααΆαα½αααΆααααααΆααα½αααΆαα ααΎβααΆβαα½αβααααΌαβααΆαβααααααβαα βαα½αβααΆααααΆααβαα½α? ααΎβααΆβαα½αβααααΌαβααΆαβααααααβαα βαα½αβα αααΎαβα¬? α¬ααΆααα½αααααΌαααΆααα·αα’αΎααΎα
ααΆαααΆααααααα RabbitMQ
α’αΆα
ααααΌαααΆααα·αααααΆααΌα
ααΆαααααα:
- α’αααααααα»αααααααΆαααααΎααΆααα ααΆαααααΆααααααΌαααΆααααΆαααα½αα
- ααΆααααααΌααααααΆαααα½αααΆααα½α αααααΌαααΆαα αα½ααα½α α¬α αααΎααααα’αα»αααααΆαα αααΆααα ααααΆαααΆ αα·ααα½α
- αα½ααααααΆαα»αα―αααΆαααααα ααΆααααα ααΆααααα½αααΆααααΌαααΆααααααΆαα»ααααα»α RAM α¬αα ααΎααΆα
- αα ααααααα’αααααααΎααααΆααααααααααα½αααα½αααΆαααΈαα½α ααααααΆαααΈααααααααΎαα αααΆααα ααααααααΆαααΆααααααα α αΎαααααΎ
- α’αα·αα·ααααα½αααΆαααΆα αα·αααααΎααΆααααααΆαααα ααΆαααααα½ααααααΆα
- αααα½ααααααΆα αα αααααα½αααΆαααΆααααααΆαα ααα αααΆααα ααααααααΆαα ααααΈαα½αα αααααΆαααααα»αα ααααΈ RAM αα·αααΆα
RPC
ααααΎαααΆα RabbitMQ
. α§ααΆα ααα ααΆααα·ααΆααααΆααααΌαα’αααΈααααααααααααα’αα·αα·ααααΆαα½α RabbitMQ
αααα αΆαααΈααααΎαααΆαααΆααααΆαααα½αα RPC
. αα
ααααααααααΆαααααααααΌαααΆααααα
ααα RabbitMQ
ααΉαααααααααα½αααα½αααααααΎααΈα’αα·αα·ααα
ααααααα
αααα»αααΆααααααΆαα AMQP
ααΆαααααΆαααΈαααααα αα·ααααΆαααΈαααα’αΆα
α
ααααΆααααααααΆα αααααΆααααααΆα’αα·αα·αααααα»ααααα
αΆαααααΆααααααααΆαα½ααααΆαααΈαααα ααΆααααααααΆααΊααΆααααΆαα αα·ααα·ααΈααΆαααααα α§ααΆα ααα, Connection.Start
- αα·ααΈααΆαααααα α
Start
ΠΊΠ»Π°ΡΡΠ° Connection
.
ααΆααααααΆαααα·ααααααΆα
αααααΆααααΆαααααΆααααααΌαααααααΆααααααααααΆααααΆαααΈαααααα αα·ααααΆαααΈαααα ααΆααα. ααΆαααααααΌαααΆααααααΎααα ααΆααααα»α ααΆααααααΆααααΆααααΆαα. ααα»αααα·αααΈαα½ααααΆα ααααα‘ααααΈααΆαααααααααααα αααα»αααααΈααααΆααααα ααΆαα·αα’αΆα ααααα·ααααα·ααΆααααααααΆαααααΆααααΆααα αα αΌααααααΆαααααΎαααααααΌαααΆαααα½αα
ααΎααααΈα’αΆα
ααααΎααΆααααααααΆααααααααΆααΆα α’αααααααΌαααΎαααΆαααααΆα
αααΎαα ααΆαααααΈαα½αααααααΎαααΆα
ααααα‘αα Erlang
ααααΎαααΆαα ααΆααααααΆαααα½αα’αΆα
ααΆαααΆαααα
αααΎα (
α§ααΆα αααααΆααααααααΆααααααΎαααΆααααααΆαααα·αααΆααααααααααΎ
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΠΊΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
// ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΠ΅Π² ΡΠ΅ΡΠΈ
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
ααΆαααΎαααΆααααααΆααααααΈαααααΆααααααα·ααααα·ααΆαααΈαα½ααααΊααΆαααΆαααααΆααααΉαα α·ααααααΆαααααΆαα ααΉαααΆαα±ααααΆαααΆαα αααΆααααααα. ααα»αααα·ααααα½αααααααααα ααα»ααααααα α»ααα·ααΈααΆαααΆα αααΎααααααΆαα±ααααΆααααα·α ααΌα ααααα’αΆαα»ααΆαααααααΆαααα’αΆα ααααΈααΆαααΆααααααΆααα
ααΎ RabbitMQ ααααΎαα α―ααΆ?
αα
αααα»αααα·ααααααααΆααΈααααΌ αα·ααΈααΆα AMQP
αα·αααΆαα’αα»ααααααααααΆαα
αααα»α RabbitMQ
ααΆααΉαααΆααααααΌαααΆαααααΎαααααΆαα α’ααααααααα’ααααΆα αααΆαααααΆααααα
αα
αααα»αααα·αα IIOT
αα·ααΈααΆα AMQP
αα·αααΆαα’αα»ααααααααααΆαα
αααα»α RabbitMQ
ααααΎαααααΆααααΆαααααΆααααααΌααα·αααααααααΆααααΆαααΈααα (server-server)α ααααΎαααααα·ααΈαααα½ααααααα
αα αααα»αα’ααααααααααΆαα ααΎαααΉαα αΆααααααΎαααααααααα’αααΈ Exchanges α±ααααΆααααα’α·ααααααααααα
ααα ααααΈααα
ααααα: www.habr.com