ืฆืืจืืื ืืืืื, ืืืจ! ืื ื ืจืืฆื ืืฉืชืฃ ืกืคืจ ืืืืื-ืกืคืจ ืขืืจ ืฉื ืืืข ืฉืืฆืืืชื ืืืกืืฃ ืขืืื RabbitMQ
ืืืจืื ืืืืืฆืืช ืืืกืงื ืืช ืงืฆืจืืช.
ืชืืื ืืขื ืืื ืื
- RabbitMQ. ืืืง 1. ืืืื. Erlang, AMQP ื-RPC
- RabbitMQ. ืืืง 2. ืืื ืช ืืืืืคืื
- RabbitMQ. ืืืง 3. ืืื ืช ืชืืจืื ืืืจืืืืช
- RabbitMQ. ืืืง 4. ืืื ืช ืื ืื ืืกืจืื ืืืกืืจืืช
- RabbitMQ. ืืืง 5: ืคืจืกืื ืืฆืจืืืช ืืืฆืืขื ืืืืขืืช
- RabbitMQ. ืืืง 6. ืกืงืืจื ืฉื ืืืืืื ืืคืืจืฆืื ืืืฉืืคื
- RabbitMQ. ืืืง 7. ืคืจืืื ืขื ืงืื ืงืฉื ืืฉืื ื
- RabbitMQ. ืืืง 8. RabbitMQ ื-.NET
- RabbitMQ. ืืืง 9. ื ืืืืจ
ืืงืฆืจื ืขื AMQP
AMQP (Advanced Message Queuing Protocol) ืืื ืคืจืืืืงืื ืคืชืื ืืืขืืจืช ืืืืขืืช ืืื ืจืืืื ืืขืจืืช. ืืจืขืืื ืืืกืืกื ืืื ืฉืชืชื ืืขืจืืืช ืืืืืืช (ืื ืืคืืืงืฆืืืช ืขืฆืืืืืช) ืืืืืืช ืืืืืืฃ ืืืืขืืช ืืืืคื ืฉืจืืจืืชื ืืืืฆืขืืช ืืชืืื AMQP, ืฉืืืฆืข ื ืืชืื, ืืืื ืืืืื ืืกืืจื, ืืคืืฅ ืืจืื ื ืชืื ืื ืื ืจืฉื ืืกืืื ืืืืืขืืช ืืจืฆืืืื.
ืคืจืืืืงืื AMQP
ืืฆืื ืฉืืืฉื ืืืฉืืื:
exchange
(ื ืงืืืช ืืืืคื ืื ืืืืคื) - ื ืฉืืืืช ืืืื ืืืืขืืช. ื ืงืืืช ืืืืคื ืืคืืฅ ืืช ืืืืืขื ืืชืืจ ืืื ืื ืืืชืจ. ืืื ืื ืชื ืืืืขืืช ืืชืืจ ืืืืกืก ืขื ืงืืฉืืจืื ืฉื ืืฆืจื (binding
) ืืื ื ืืืื ืืชืืจqueue
(ืชืืจ) - ืืื ื ื ืชืื ืื ืืืืกืง ืื ื-RAM ืื ืืืืกื ืงืืฉืืจืื ืืืืืขืืช ืื ืืชื ืขืืชืงืื ืฉื ืืืืขืืชconsumers
(ืืฆืจืื ืื)binding
(ืืืืื) - ืืื ืฉ ืืืืจ ืื ืงืืืช ืืืืืคื ืืืืื ืชืืจ ืืืืืขืืช ืืืื ืฆืจืืืืช ืืืืื ืก
ืืคืจืืืืงืื ืคืืขื ืขื ืืื
ืืงืฆืจื ืขื ืืจืื ื
ืงืื ืืืงืืจ ืฉื ืืคืจืืืงื ื ืืฆื ืืืืืจ ืืืชืืืช
Erlang
ืฉืคืืชืื ืขื ืืื ืืืืจืEricsson
ืืืืฆืข ืฉื ืืช ื-1980 ืืืขืจืืช ืืืืืจืช, ืกืืืื ืืช ืืชืงืืืช, ืืืื ืืืช ืขืืืจ ืืืฉืืืื ืืืืจืฉืื 99,999% ืืื ืคืขืืื.Erlang
ืืฉืืฉ ืืชืขืฉืืืช ืฉืื ืืช ืืืืฉืืืื ืืืืจื ืืื, ืืืฉื.ืืจืืืืงืืืจืช WhatsApp, ืฉืคืืืกืืืง ืจืืฉื ืชืืืจืช 19 ืืืืืืจื ืืืืจ
ืืงืฆืจื ืขื 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
ืืฉืืฉ ืืืืืคืช ื ืชืื ืื ืืื ืฉืจืชืื (ืฉืจืช-ืฉืจืช). ืืฉืชืืฉ ืื ืืชืืกืฃ
ืืืืืจ ืืื ื ืชืืื ืืืืื ืืช Exchanges ืืืชืจ ืคืืจืื.
ืชืืืืจ
ืืงืืจ: www.habr.com