ืืื ื ืึธืืืืืึธื, ืืืจ! ืืื ืืืืื ืฆื ืืืืื ืึท ืืขืจื ืืื-ืจืขืคึฟืขืจืขื ืฅ ืืื ืคืื ืืืืกื ืืืึธืก ืืื ืืขืจืืื ืฆื ืืึทืืืขื ืืืืฃ RabbitMQ
ืืื ืงืึทื ืืขื ืกื ืืื ืงืืจืฅ ืจืขืงืึทืืึทื ืืืืฉืึทื ื ืืื ืงืึทื ืงืืืืฉืึทื ื.
ืืืฉ ืคืื ืืื ืืึทืื
- RabbitMQ. ืืืื 1. ืืงืืื. ืขืจืืึทื ื, AMQP ืืื RPC
- RabbitMQ. ืืืื 2. ืคืืจืฉืืื ื ืขืงืกืืฉืึทื ืืขืก
- RabbitMQ. ืืืื 3. ืคืืจืฉืืื ื ืงืืื ืืื ืืื ืืื ืืก
- RabbitMQ. ืืืื 4. ืคืืจืฉืืื ื ืืืึธืก ืึทืจืืืงืืขื ืืื ืจืึธืืขื ืืขื ืขื
- RabbitMQ. ืืืื 5: ืึธื ืืึธื ืคึผืืืืืฉืื ื ืืื ืงืึทื ืกืึทืืฉืึทื ืคืึธืจืฉืืขืืื ื
- RabbitMQ. ืืืื 6. ืึธืคึผืฉืึทืฆืื ื ืคืื ืื ืคืขืืขืจืืืฉืึทื ืืื ืจืืื ืืึทืืืฉืืื
- RabbitMQ. ืืืื 7. ืืขืืึทืืืก ืืืขืื ืงืึทื ืขืงืฉืึทื ืืื ืืฉืึทื ืขื
- RabbitMQ. ืืืื 8. RabbitMQ ืืื. ื ืขืฅ
- RabbitMQ. ืืืื 9. ืืึธื ืืืึธืจืื ื
ืืขืงืืฆืขืจ ืืืขืื AMQP
AMQP (Advanced Message Queuing Protocol) ืืื ืึทื ืึธืคึฟื ืคึผืจืึธืืึธืงืึธื ืคึฟืึทืจ ืืจืึทื ืกืืืืื ื ืึทืจืืืงืืขื ืฆืืืืฉื ืกืืกืืขื ืงืึทืืคึผืึธืื ืึทื ืฅ. ืื ืืจืื ื ืืขืืึทื ืง ืืื ืึทื ืืืื ืกืึทืืกืืกืืึทืื (ืึธืืขืจ ืคืจืืึท ืึทืคึผืืึทืงืืืฉืึทื ื) ืงืขื ืขื ืืืขืงืกื ืึทืจืืืงืืขื ืืืืฃ ืึท ืึทืจืืืืจืึทืจืืฉ ืฉืืืืืขืจ ืืืจื ืึท AMQP ืืขืงืืขืจ, ืืืึธืก ืคึผืขืจืคืึธืจืื ืจืืืื ื, ืขืคืฉืขืจ ืืขืจืึทื ืืื ืขืงืกืคึผืจืขืก, ืืืกืืจืืืืืฅ ืืึทืื ืกืืจืืื ืืื ืึทืืึธื ืืจื ืฆื ืื ืืขืืขืื ืึธื ืืึธื ืืืืคึผืก.
ืคึผืจืึธืืึธืงืึธื AMQP
ืืึทืงืขื ืขื ืืจืฒึท ืืึทืืจืืคึฟื:
exchange
(ืืืขืงืกื ืคืื ื ืึธืืขืจ ืืืขืงืกื) - ืึทืจืืืงืืขื ืืขื ืขื ืืขืฉืืงื ืฆื ืขืก. ืืืขืงืกื ืคืื ื ืืืกืืจืืืืืฅ ืึธื ืืึธื ืืื ืืืื ืึธืืขืจ ืืขืจ ืจืืืขื. ืื ืจืืฅ ืึทืจืืืงืืขื ืฆื ืึท ืจืื ืืืืืจื ืืืืฃ ืื ืืืฉืืคื ืงืึทื ืขืงืฉืึทื ื (binding
) ืฆืฐืืฉื ืืื ืืื ืืขืจ ืจืืqueue
(ืจืื) - ืึท ืืึทืื ืกืืจืืงืืืจ ืืืืฃ ืืืกืง ืึธืืขืจ ืืื ืืึทืจืึทื ืึทื ืกืืึธืจื ืืื ืงืก ืฆื ืึทืจืืืงืืขื ืืื ืืื ืงืืคืืขืก ืคืื ืึทืจืืืงืืขืconsumers
(ืฆื ืงืึธื ืกืืืขืจืก)binding
(ืืืื ืืื ื) - ืึท ืืขืจืฉื ืึทื ืืขืจืฆืืืื ืื ืืืขืงืกื ืคืื ื ืืื ืืืึธืก ืจืื ืื ืึทืจืืืงืืขื ืืึธื ืืืื ืืื
ืืขืจ ืคึผืจืึธืืึธืงืึธื ืืืืคื ืืืืฃ ืฉืคึผืืฅ
ืืขืงืืฆืขืจ ืืืขืื ืขืจืืึทื ื
ืืขืจ ืืงืืจ ืงืึธื ืคืื ืื ืคึผืจืืืขืงื ืืื ืืื ืื ืจืืคึผืึทืืึทืืึธืจื ืืืึท
Erlang
ืืขืืืขืืึธืคึผืขื ืืืจื ืื ืคืืจืืขEricsson
ืืื ืื ืืืื 1980 ืก ืืื ืึท ืคืื ืื ืืขืจืืขืืืืื, ืฉืืื-ืืึธืืขืจืึทื ื, ืคืึทืงืืืฉ-ืฆืืื ืกืืกืืขื ืคึฟืึทืจ ืึทืคึผืืึทืงืืืฉืึทื ื ืืืึธืก ืืึทืจืคื 99,999% ืืคึผืืืืข.Erlang
ืืขืืืืื ื ืืื ืคืืจืฉืืืขื ืข ืื ืืึทืกืืจืื ืืื ืืึธืืขืจื ืึทืคึผืืึทืงืืืฉืึทื ื, ืืืฉื.ืืืืึทืฆืึทืคึผืคึผ ืึทืจืงืึทืืขืงืืฉืขืจ, ืืืึธืก ืคืึทืกืขืืึธืึธืง ืืขืงืืืคื ืคึฟืึทืจ $ 19 ืืืืืึธื
ืืขืงืืฆืขืจ ืืืขืื RabbitMQ
RabbitMQ
ืืืคึผืืึทืืึทื ืฅ ืืื ืืืืืืืขืก ืืขื ืคึผืจืึธืืึธืงืึธื AMQP
.
ืืขืจ ืืืืคึผื ืืขืืึทื ืง ืคืื ืื ืืขืกืืืืฉืื ื ืืึธืืขื ืืื RabbitMQ
ืืึทื ืืื producer
(ืืืืกืืขืืขืจ) ืฉืืงื ื ืืฉื ืึทืจืืืงืืขื ืืืืื ืฆื ืืขืจ ืจืื. ืืื ืคืึทืงื, ืืื ืืึทื ืฅ ืึธืคื, ืืขืจ ืึทืจืืืกืืขืืขืจ ืืืืืกื ืืคืืื ื ืืฉื ืืืื ืืขืจ ืึธื ืืึธื ืืืขื ืืืื ืืืืขืจืืขืืขืื ืฆื ืงืืื ืจืื.
ืึทื ืฉืืึธื, ืืขืจ ืึทืจืืืกืืขืืขืจ ืงืขื ืขื ืืืืื ืฉืืงื ืึทืจืืืงืืขื ืฆื ืืขืจ ืืืขืงืกื. ืคืื ืืืื ืืืื ืืืงืืื ืืขืจ ืืืขืงืกื ืึทืจืืืงืืขื ืคืื ืคึฟืึทืจืืึทืื, ืืื ืคืื ืื ืื ืืขืจืข ืืืื ืฉืืงื ืขืก ืืื ืืื ืจืืืขื. ืืขืจ ืืืขืงืกื ืืืื ืืืืกื ืคึผืื ืงื ืืืึธืก ืฆื ืืึธื ืืื ืื ืึธื ืืึธื ืขืก ื ืขืื. ืืึธื ืขืก ืืืื ืืืกืืฃ ืฆื ืึท ืกืคึผืขืฆืืคืืฉ ืจืื? ืืึธื ืขืก ืืืื ืืืกืืฃ ืฆื ืงืืืคื ืงืืื? ืึธืืขืจ ืืขืจ ืึธื ืืึธื ืืึธื ืืืื ืืืื ืึธืจืืจื.
ืงืืจืฅ ืึทืจืืขื RabbitMQ
ืงืขื ืขื ืืืื ืืืกืงืจืืืื ืืื ืืืื:
- ืืขืจ ืึทืจืืืกืืขืืขืจ ืกืขื ืื ืึท ืึธื ืืึธื ืฆื ืึท ืกืคึผืขืฆืืคืืฉ ืืืขืงืกื
- ืึท ืืืขืงืกื, ื ืึธื ืืืงืืืขื ืึท ืึธื ืืึธื, ืจืืฅ ืขืก ืฆื ืืืื ืขืจ ืึธืืขืจ ืืขืจ ืงืืื ืืื ืืืื ืืื ืื ืืืื ืืื ื ืึผืืืื ืฆืืืืฉื ืขืก ืืื ืื ืจืื
- ืื ืจืื ืกืืึธืจื ืึท ืจืขืคึฟืขืจืขื ืฅ ืฆื ืืขื ืึธื ืืึธื. ืืขืจ ืึธื ืืึธื ืืื ืืื ืกืืึธืจื ืืื ืืึทืจืึทื ืึธืืขืจ ืืืืฃ ืืืกืง
- ืึทืืึธื ืืขืจ ืงืึทื ืกืืืขืจ ืืื ืืจืืื ืฆื ืืึทืงืืืขื ืึท ืึธื ืืึธื ืคืื ืืขืจ ืจืื, ืืขืจ ืกืขืจืืืขืจ ืงืจืืืืฅ ืึท ืงืึธืคึผืืข ืคืื โโโโืืขื ืึธื ืืึธื ืืืจื ืื ืืื ืง ืืื ืกืขื ืื
- ืืขืจ ืงืึทื ืกืืืขืจ ื ืขืื ืืขื ืึธื ืืึธื ืืื ืกืขื ืื ืืึทืฉืืขืืืงืื ื ืฆื ืืขืจ ืืขืงืืขืจ
- ืืขืจ ืืขืงืืขืจ, ืืืขื ืขืจ ืืืงืืืขื ืืึทืฉืืขืืืงืื ื, ืจืืืืืื ืึท ืงืึธืคึผืืข ืคืื โโืืขื ืึธื ืืึธื ืคืื ืืขืจ ืจืื. ืืขืจื ืึธื ืืืืืฅ ืคืื ืืึทืจืึทื ืืื ืืืกืง
ืจืคึผืง
ืคึผืจืึธืฆืขืก 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
ืืขื ืืฆื ืคึฟืึทืจ ืืึทืื ืืืขืงืกื ืฆืืืืฉื ืกืขืจืืืขืจืก (ืกืขืจืืืขืจ-ืกืขืจืืืืจืขืจ). ืืืื ื ืืฆื ืื ืคึผืืืืื
ืืื ืืขืจ ืืืืึทืืขืจ ืึทืจืืืงื ืืืจ ืืืขืื ืึธื ืืืืื ืฆื ืคึฟืึทืจืฉืืืื ืืงืกืืฉืืื ืืืฉืื ืืื ืืขืจ ืืขืืึทื.
ืจืขืคึฟืขืจืขื ืฆื
ืืงืืจ: www.habr.com