cog
cog copied to clipboard
GenMqtt adds latency to pipeline execution
Carrier.Messaging.GenMqtt was first introduced when we reworked the chat provider API in summer 2016. The goal was to provide a GenServer style API on top of basic MQTT queue usage. Cog.Chat.Adapter was ported to use GenMqtt to prove the design.
Since then GenMqtt hasn't been used in any other places. Furthermore, using the message bus for RPC messages is much slower compared to Erlang messaging. The slowness shows up as latency in the command execution path since Cog.Chat.Adapter provides a key service.
Based on some exploratory prototyping moving Adapter back to a traditional GenServer should perceptibly reduce pipeline execution times without impacting any existing functionality.