Skip to content
This repository was archived by the owner on Nov 13, 2025. It is now read-only.

javamartini/mini_esb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini ESB

For this assignment, I am to implement an Enterprise Service Bus architecture using ZeroMQ. This architecture will support applications that monitor a running system and capture statistics provided and send those statistics across a network.

Usage

Statistics Connector Executable

Usage is simple, as the default values for optional arguments are the typical choice. However, if you wish to change those values, use the arguments below.

  • -a [DEST_ADDRESS]: Specify the address for the socket to connect to as a publisher. There is a specific format for the addressing here, and if not done right it will fail. Here is an example of an address to connect to: tcp://10.105.193.214:8081. The default value is tcp://0.0.0.0:8081.

  • -c [STAT_COUNT]: Specify the "count" of data to collect. New data is collected every second, so if you specify '64' you are going to collect 64 counts of data. The default value is 32.

Statistics Monitor Executable

Usage is just as simple as the statistics connector, as the default values for optional arguments are the typical choice. However, if you wish to change those values, use the arguments below.

  • -a [DEST_ADDRESS]: Specify the address to be used when attempting to reach the publisher (middle-ware). There is a specific format for the addressing here, and if not done right it will fail. Here is an example of an address to connect to: tcp://10.105.193.214:8080. The default value is tcp://127.0.0.1:8080.

Message Queueing Executable

Usage is just as simple as the last two binaries, as the default values for optional arguments are the typical choice. However, if you wish to change those values, use the arguments below.

  • -b [SUBSCRIBE_ADDRESS]: Specify the address to bind too when creating a forwarding subscribe socket. The statistics monitor will read messages forwarded to it via this socket. The default value is tcp://0.0.0.0:8081. As with the last ones, be careful to input the correct format of address.

  • -f [PUBLISH_ADDRESS]: Specify the address to bind too when creating a forwarding publisher socket. The statistics connector back-end is designed to subscribe to the XPUB of this item. The default value is tcp://0.0.0.0:8080. As with the last ones, be careful to input the correct format of address.

Installation

Installation will be simple, but just make sure you have the necessary dependencies installed first.

On Linux with the Apt package manager, for a couple of them...

apt install libzmq4-dev cppzmq gnuplot

As for the Boost.Process library, version 1.74 is required for this project. Thus, make sure to download the correct release. Dr. Rogers, the compressed folder was still way to large in size to include in the deliverables, so the link is provided here. I believe, however, that the provided Linux VM already has Boost 1.74.0 available via it's package manager.

tar -xf boost_1_74_0.tar.gz

# If your Linux distribution still has 1.74 available via Apt.
apt install libboost-dev

The following steps are for installing it onto your system, and they make it simple with their shell script. These steps assume you are in the project root directory of the extracted file.

./bootstrap.sh --prefix=/usr/local/boost-1.74.0
./b2 install

Now all that is left is to use CMake to actually compile and link the programs. I've configured CMake to do the rest. Ensure this is done from the project root directory.

cmake -S . -B build -DBOOST_ROOT=/usr/local/boost-1.74.0
cmake --build build/

To clean up build files, just run:

make -C build/ clean

Testing

Testing is done via the Makefile generated by CMake. It is super simple, but just make sure to kill all processes when you are ready.

make -C build/ run

# === IMPORTANT. Kill the processes. ===
make -C build/ killall

Author

Javontae Alexander Martin

Instructor

Dr. Micheal Rogers

Course

CSC-4770 - Distributed & Cloud Computing

About

I am to implement a Service Bus architecture that captures statistics provided by a statistics generator and send them to a statistics monitor.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors