I plan to provide additional functions for a closed-source 3rd party point of sales application. That application is used in restaurants, is run on Windows and uses dbase style databases. I know the details about the database structure (hey, it's DBase, so no big deal ;-)) and am able to read and correlate tables.

The application is run behind a firewall neither I nor most of the clients can influence, so opening incoming ports on the firewall is not possible.

The additional functions I provide shall be either used in an externally hosted web application or an App on a smartphone (iOS or Android does not matter here, I will most likely use Apache Cordova for this)

My problems is getting the data out. In my current design / architecture I plan to use MQTT to publish data from the customers site to a server located on the Internet where it can be retrieved by the App / application. Unfortunately I have no experience with MQTT and do not know if it would be better to take a different approach / alternative and only use MQTT for publishing data and add an additional REST layer for the application / App.

Here is my criteria for making MQTT the "right decision"

  • support authentication for publishing and retrieving data (no one shall be able to forge data or retrieve data for a site he or she is not entitled to see)
  • use as little bandwidth as possible (both my server and the dataplan for the smartphone running the App have a limit and I or the user will be charged for bandwidth used beyond that limit)
  • be a good fit for various and complex JSON structures (from the picture you can see which kind of information I want to transport, they can be several kilobyte in size)
  • support retrieving data using REST (I read that MQTT can be used from Javascript and in a REST style but have no deeper experience with that)
  • allow signalling of updates from site to user
  • allow listing (a user should be able to use REST in order to retrieve a list of sites he is entitled too) and filtering (when for example getting details about a clerk the user should be able to set a filter to the name of the clerk)enter image description here

My biggest question is if MQTT will be usable from the web application / App in an "elegant" way. I could relatively easily add my own REST layer "on the right side of the picture" but I do not want to overcomplicate my design

  • I do not know MQTT, but whatever you implement, you will need some kind of protocol, and MQTT does not seem a too bad decision for what you have in mind. So now its time to build a prototype or spike and try it out. If you got some experience from that, you may consider to come back and answer your own question.
    – Doc Brown
    May 18, 2015 at 21:03
  • 1
    message size limit for mqtt is 260MB so you should be okay
    – dot
    Sep 23, 2015 at 19:20


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.