MQTTはHerokuで動かすことが出来たのですがWindows 7 64bitのローカル上でMQTTをテストするべくMosquitto入れてみます。若干ハマリポイントもあったので忘れるとまずいのでメモしておきます。
An Open Source MQTT v3.1 Broker
Mosquittoをインストール
An Open Source MQTT v3.1 Brokerに行きます。
ダウンロードボタンをクリック。
ダウンロードページに遷移します。
mosquitto-<バージョン>-install-win32.exe をダウンロード。
先ほどのexeをダブルクリックしてインストール開始。
なにやら、このパッケージを使うには追加で入れるものがあるとのこと。(のちほどReadmeを読む箇所で触れます)
コンポーネントはデフォルトのままでOK。
話が前後してしまうのですが、次でご紹介するMosquittoのReadmeにあるようにDLLを追加で入れる必要があるので
C:\Program Files (x86)\mosquittoではなく C:\mosquitto にします。
インストール中。
インストール完了!
MosquittoのReadmeを読んでみる
Mosquittoのフォルダを見てみます。
Readme(readme-windows.txtのほう)があるので読んでみます。さきほどインストール画面でも触れていた重要な項目があります。
Dependencies - win32 -------------------- * OpenSSL Link: http://slproweb.com/products/Win32OpenSSL.html Install "Win32 OpenSSL <version>" Required DLLs: libeay32.dll ssleay32.dll * pthreads Link: ftp://sourceware.org/pub/pthreads-win32 Install "pthreads-w32-<version>-release.zip Required DLLs: pthreadVC2.dll Please ensure that the required DLLs are on the system path, or are in the same directory as the mosquitto executable.
どうやら、
- OpenSSL(libeay32.dll・ssleay32.dll)追加のインストール
- pthreads(pthreadVC2.dll)追加のインストール
- 追加インストール先は、システムパスかMosquittoと同じフォルダに上記DLLを入れる必要がある
とのことです。早速やってみます。
OpenSSL
* OpenSSL Link: http://slproweb.com/products/Win32OpenSSL.html Install "Win32 OpenSSL <version>" Required DLLs: libeay32.dll ssleay32.dll
Shining Light Productions – Win32 OpenSSL
にアクセスします。
Install "Win32 OpenSSL <version>"
のとおり、64bitでもWin32 OpenSSLのほうをインストールします。
インストール後にフォルダを見に行きます。
Required DLLs: libeay32.dll ssleay32.dll
のとおり、libeay32.dll ssleay32.dllをMosquittoフォルダに入れます。
pthreads
続いて、pthreadsからpthreadVC2.dllを探します。
* pthreads Link: ftp://sourceware.org/pub/pthreads-win32 Install "pthreads-w32-<version>-release.zip Required DLLs: pthreadVC2.dll
にあるとおり、
ftp://sourceware.org/pub/pthreads-win32
にアクセスします。
Install "pthreads-w32-<version>-release.zip
にあるとおり、最新版のzipをダウンロードします。
解凍すると、
と、 pthreadVC2.dllの位置がサッパリなので探します。
フォルダツリーを見る限り、
Pre-built.2\dll\x64\pthreadVC2.dll
にあるようです。pthreadVC2.dllをMosquittoフォルダに入れます。
上記を済ませたMosquittoフォルダの状態
libeay32.dll・ssleay32.dll・pthreadVC2.dllを入れたMosquittoフォルダの状態です。
コマンドプロンプトから叩いてみる
C:\mosquitto フォルダに行き、
mosquitto -v
を叩いてみると以下のように実行される。
うまくいきました!
余談:「序数 ○○○ がダイナミック ライブラリ SSLEAY32.dll からみつかりませんでした。」と出てしまうエラーが出た場合の対処法
上記実行してみても「「序数 ○○○ がダイナミック ライブラリ SSLEAY32.dll からみつかりませんでした。」と出てしまうエラーが出てしまい絶望する時があります。
原因
私の場合、これは以前OpenSSLを別途使うためにOpenSSL-Win64を
入れていて横着してWin64のSSLEAY32.dllを入れてしまったために起きていました。
3日程度ハマったのは秘密。
対処法
MosquittomのReadmeの通り、OpenSSL-Win32のものからちゃんと抽出して入れましょう。SSLEAY32.dllが同じ名前というのがかなりハマリポイントですね!
それでは、よきMosquitto Lifeを!