Step by step installing and configuring Mosquitto with Windows 7

Mosquitto is a MQTT (MQ Telemetry Transport) broker used for handling lightweight data transfer protocol. This broker is based on open source which implements MQTT v 3.1 and v3.1.1 as I write this post. This Post would be useful for someone who would like to configure Mosquitto in Windows 7 and test it.

Step 1: Download mosquito from the Download section of Mosquitto.org. In this example we will go through the use of the first link which would be native build applicable for Windows Vista and above.

Step 2: It will take you to the Eclipse repository with mirror options through which you can download the exe file.


Step 3: Double clicking the downloaded exe will throw you with the following screen through you might need to download the OpenSSL and pThreads.

Quick Links:

pThreads: ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/

OpenSSL: http://slproweb.com/products/Win32OpenSSL.html

Step 4: Download the Win32 OpenSSL v1.0.2c Light setup file and install it. We need to get couple of DLL files from this installation which we will see it in the subsequent steps.

Pthreadvc2.dll will be found as given below which can right click and save it to the folder you need.

Step 5: The next step would be asking if you want to install the service too, select it and click next

Step 6: Select install location as given below

Step 7: Installation will get progressed once you press Install as given below

Step 8: Now the installation is done, we need to make sure the following files are copied to the folder where Mosquitto is installed.

Dependencies – win32

Required DLLs: libeay32.dll ssleay32.dll (Look for these files in the OpenSSL-Win32 or OpenSSL-Win32\Bin folder)

Required DLLs: pthreadVC2.dll

Important Note: Please ensure that the required DLLs are on the system path, or are in the same directory as the mosquitto executable.

Step 9: You need to reinstall Mosquitto so that it will also configure the windows Services as shown below as it has the necessary pre-requisites now in the folder C:\Program Files (x86)\mosquitto.

Step 10: How to check if Mosquitto broker has started and running? use the command netstat -an from the command prompt

In another post we will see how we can test the Mosquitto on MQTTLens using Chrome Extensions, mosquitto_pub and mosquitto_sub.

Advertisements

Connectivity challanges with respect to IoT Devices

With the emergence of Internet of things there are various challenges exists with respect to aggregating data to a centralized data repository because of connectivity issues. This post envisages to outline the challenges in detail.IoT Unique Characteristics

1. Unable to connect to the internet because of limited connectivity or range in remote locations where manufacturing facility exists

2. Bandwidth available with 2G options such as GPRS is very limited for data transfer

3. Intermittent loss of connectivity would hamper the data communication process from the IoT devices to the Private or Public Cloud

4. It must be secure enough as it might pose a great danger if its not well controlled

5. Must have the capability to Poll or Push data

Memcached : Simple Q & A

What is Memcache ?

Memcache is a caching system used to speed up the performance of web applications as a whole.

Defintion?

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. – Source: Memcached.org

Why to use Memcache?

It typically caches data and objects in RAM for faster delivery instead of reading an External storage whenever the request is made.

Typical applications which uses Memcache ?

Wikipedia, Youtube, Twitter to name a few. Exhaustive list available in http://memcached.org/

Is it open source, when does its development started?

Yes, Memcached development was started in 2003 by Brad Fitzpatrick for LiveJournal

Typical scenario it would be powerful?

As its a distributed system when it is deployed on a cluster it can consolidate memory and can be very handy to provide quick response through its caching mechanism.

Is there a pointer where I can understand ?

Look at this interesting fable here: https://code.google.com/p/memcached/wiki/TutorialCachingStory

Setting up cloud my Devstack experience

In this post I will share my experience with setting up cloud in a virtual box with Devstack.

My Environment:

  • Ubuntu 14.04 Trusty
  • Virtualbox
  • Intel x86 64-bit
  • 8GB RAM
  • 150 GB HDD

Steps followed:

1. Completed acquiring an Ubuntu OVA image from virtualbox.org

2. Used the username and password as provided and logged in to the virtal machine

3. http://docs.openstack.org/developer/devstack/ is the guide which is to be adopted

4. you need to install git by using apt-get install git-core before the next step

5. Issue the command git clone https://git.openstack.org/openstack-dev/devstack

6. This will create a folder devstack

6. Navigate to devstack for issuing ./stack.sh to start the cloud

7. you might get an error message when you run the ./stack.sh as die, make sure you use FORCE=yes ./stack.sh

8. Once you overcome these hurdles it will check for different password for nova, horizon, etc., then the build of the devstack will be in progress

and finally…


Introduction to Microservices

“Microservices” is basically an architectural style to develop a single application having small services which can communicate using Lightweight mechanism such as HTTP resource API. This would be most suitable when you have multiple interfaces which you would like to consume in the end-user scenario. Probably this post would be a summary of the Keynote from Martin Fowler.

Also microservices are nothing but a meaningful subset of SOA. so it can never by considered as an alternative or to replace SOA.

Microservices

Why Microservice?

  • Monolithic puts all functionality under one application process where in Microservice puts features/services into a separate servics.
  • During the deployment to a distributed environment monolithic service has similar replica of its services where in Microservices  can be deployed based on the need basis.

Common characteristics outlined in his talk are:

  1. Componentization via services
  2. Organized around business capabilities
  3. Products not projects
  4. Smart end points and dumb pipes
  5. Decentralized Governance
  6. Decentralized Data management
  7. Infrastructure Automation
  8. Design for failure
  9. Evolutionary design

Few important takeaways according to me:

  1. Componentization via Services: The componentization during development should be in such a way that it is independently replaceable and upgradable. Microservices uses the library and services can be built as components.
  2. Organized around business capabilities: Whenever the applications are built generally the teams are divided as UI, Middleware and DBAs. Instead the team should be organized around the communication channel in the business according to Conway’s law. These microservices dev teams are cross functional teams which has an broad spectrum resources with UX, Persistent Storage and project management knowledge. This helps align quicker to understand the business context in faster ways

We will discuss more on the other takeaways in the upcoming post.

SOA: Understanding the terminology

You might have came across this term many times. This post attempts to provide different perspectives available in different sources for this term “SOA”. Don’t miss this wonderful SO thread on the subject.

From TOGAF 9 AS-IS:

Service-Oriented Architecture (SOA) is an architectural style that supports service-orientation.

Service-orientation is a way of thinking in terms of services and service-based development and the outcomes of services.

A service:

  • Is a logical representation of a repeatable business activity that has a specified outcome (e.g., check customer credit, provide weather data, consolidate drilling reports)
  • Is self-contained
  • May be composed of other services
  • Is a “black box” to consumers of the service

Source: http://www.opengroup.org/soa/source-book/soa/soa.htm

Also look at this page of Martin Fowler which outlines various ambiguity around the topic. Key ambiguity issues outlined there are as follows:

  1. SOA is considered to be exposing software through web services
  2. Asynchronous messaging exchange
  3. Systems communicate over standard messaging infrastructure such as SOAP/WSDL

When Continous integeration is most needed?

Do we need to adopt continuous integration everywhere when we do development ? or Where its most applicable? This post is an attempt to find a answer to that question.

According to ThoughtWorks “Continuous integration is a development practice that helps developers to adopt several check-ins to the code they have developed multiple times in a day”. 3 important benefits stated for Continuous integration:

  1. Help detect defects and  remove them early
  2. Avoid last minutes integration failures
  3. Eliminate waiting time to check if your code will work post-integration without any problems

Now coming back to the question, following could be the reasons:

  1. Whenever you are into agile projects features has to be delivered at ease and fast.
  2. When there are distributed teams involved in development
  3. Multiple components are to be integrated to  a single product or solution
  4. Whenever there is need to build the entire source whenever someone check-in the code
  5. Provides transparency across developers on the build process and its outcomes. Helps to improve the overall ability to fix issues as it occurs.