AMQP на български

Днес има доста информация за AMQP (Advanced Message Queuing Protocol) и приложението му, особено на български. Като цяло, това е прекрасен, вече широко поддържан отворен протокол за прехвърляне на съобщения между системни компоненти с ниска латентност и висока скорост. В този случай семантиката на съобщенията е конфигурирана според нуждите на конкретен проект. Такива решения е имало и преди, но това е първият стандарт, за който има голям брой безплатни реализации.

Основната идея е, че отделни подсистеми (или независими приложения) могат да обменят произволно съобщения чрез AMQP брокер, който извършва маршрутизиране, евентуално гарантира доставка, разпределение на потоците от данни, абонамент за желаните типове съобщения. Като класически примери обикновено се цитират финансови приложения, свързани например с предоставяне на информация в реално време за цените на ценните книжа на потребителите, също така е възможно да има RPC взаимодействие между две подсистеми, които не комуникират помежду си (взаимодействие чрез общия AMQP протокол) и т.н., и т.н.

Днес темата за предоставянето на информация в реално време е изключително актуална (само си спомнете Twitter, Google Wave). Тук отново системите за съобщения могат да служат като вътрешен механизъм за обмен на данни, който осигурява доставката на данни (промени в данните) на клиентите.

След това трябва да изберете AMQP брокера, който ще използвате. При избора е необходимо да се вземат предвид действителните характеристики на сървъра: скорост, надеждност, лекота на инсталиране и поддръжка, но също така внимателно да се разгледа версията на протокола AMQP, поддържана от брокера - тя трябва да съответства на версията на клиентаAMQP библиотеки. От брокерите бих препоръчал RabbitMQ, написан на Erlang, и Qpid, версии на C ++ (AMQP 0-10) и Java (0-8, 0-9).

Самият протокол AMQP е доста интересен: на най-ниското ниво е дефиниран форматът за кодиране на данни в двоична форма за предаване през TCP връзка, по-горе е форматът за предаване на RPC заявки между сървъра и клиента. Самата семантика на работа със съобщения, създаване на опашки и т.н. е описано в XML спецификацията, която по същество дефинира RPC интерфейса на сървъра и клиента (примери за такива XML файлове за версии 0-8 и 0-10). Този XML е окончателната и крайна спецификация на протокола. Освен това версиите на протокола 0-8 и 0-10 се различават толкова много, че едва ли е възможно да се поддържат едновременно в една програма. По-интересното е, че понякога такива файлове със спецификации за различни AMQP брокери, които официално поддържат една и съща версия на протокола, се различават толкова много, че не са взаимозаменяеми. Но това са по-скоро дребни технически проблеми.

Hardcore conf в C++. Каним само професионалисти.