Navigation
AtData logo

AtData ActiveMQ Integration

Help Center   ❯  InstantData   ❯  Integrations


AtData hosts an Apache ActiveMQ server at events.towerdata.com. AtData clients may connect to the server to receive real-time data. AtData provides the following examples for connecting to AMQ:

Java consumer (Uses openwire protocol).
Note that the java consumer combines the destination ID and the namespace into a single command-line parameter called “destination”.  This parameter should be assembled as follows:

<destination id> + ".RTO." + <namespace>

e.g. destination1.RTO.yourcompany

More info on the destination id is below.

Python consumer (Uses STOMP protocol).
Note that the Python code requires the installation of the “stomp.py” package.  There is a similar package called “stompy” that is not used and won’t fulfill the requirement.

The example programs take the following parameters:

AtData will supply the username, password, and namespace.

Destination id and connection id

Destination id and connection id can be used to create load-balancing or mirroring behavior.  In most implementations, a single consumer process is used to manage incoming data. Destination id and connection id should be consistent even across restarts – varying the value of these options (e.g. using a timestamp) can cause loss of data and/or performance issues.

If multiple consumer processes are run from the same IP address, each process must have a unique connection id.

Launching multiple consumers, each with a unique destination id, will result in mirroring behavior.  Each consumer process will receive the same set of data.

Launching multiple consumers with the same destination id but unique connection ids will result in load balancing behavior.  Each consumer will receive a distinct portion of the incoming data.

Incoming Data

Your consumer program will receive messages in JSON format. Each message will constitute an event (“open” or “pixel”, depending on which TowerData service you’re using).  The message will generally be an MD5, e.g.:

{"md5":"098f6bcd4621d373cade4e832627b4f6"}

You may be using a service that includes additional fields, e.g.:

{"md5":"098f6bcd4621d373cade4e832627b4f6","label":"aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"}