RabbitMQTwitterFacebookはてブPocket仕事でRabbitMQを使う機会があった。私自身はフロントエンド畑の人なので、メッセージングシステムの意味はわかるけど使ったことがなかったので、実験用サーバ(CentOS7.3)を用意して勉強してみようと思う。今後、数回にわけてRabbitMQの基本、インストール、設定、使い方などをブログに書いていく。今回は、インストール~設定までして、最終的にRabbitMQを使える状態にする。その過程でハマりにハマったので手順として残しておく。「RabbitMQをCentOSにインストールした」と書き出したが、そもそもRabbitMQがなんなのか、どんなときに使われるのか説明する。RabbitMQはAMQPを使用したメッセージ指向ミドルウェア。処理の命令をいったんキューイングして、逐一実行するためのメッセージングシステムのひとつ。呼び出し側(Producer)がRabbitMQにメッセージを登録しておく。呼び出される側(Consumer)がそのメッセージを受け取り実行する。このようにメッセージングシステムを間に挟むことで、呼び出し側と呼び出される側を完全に分離することができる。呼び出し側はメッセージを登録しておくだけなのでレスポンスを待つ必要がなく、また呼び出される側もメッセージをひとつひとつ受け取り実行することで負荷分散ができる。アプリケーションが万が一落ちたとしてもメッセージは残っているので、再起動後に実行できるなど障害にも強くなる。RabbitMQについて知るには、まずはAMQPについて知る必要がある。Protocolの略で、HTTPやFTPなどと同じアプリケーション層のプロトコルであり、メッセージ指向、キューイング、ルーティング、セキュリティなどが定義されている。AMQPをつかったメッセージングシステムは数多くあり、BrokerモデルとBrokerlessモデルの2つの種類に分けられる。RabbitMQはメッセージをためておくBrokerがあるBrokerモデルだが、中にはP2Pのように直接メッセージをやりとりBrokerlessモデルもある。RabbitMQをインストールする今回インストールするものは以下のとおり。v5.10.4ErlangをインストールするRabbitMQはErlangで実装されているので、まずは動作環境を準備するためにErlangをインストールする。公式のインストールガイドでは、以下の3つの方法が紹介されている。Solutions最新版のパッケージをインストールできるZero-DependencyパッケージRabbitMQを動かすために必要なコンポーネントだけをまとめたもの依存関係で躓いたときはこれをインストールするといいらしいEPEL最新じゃないかもしれないけど公式パッケージErlangについてまったく知らないし、インストールガイドを読んでも結局どれでインストールすれば良いのかわからなかったので、見覚えのある「EPEL」をつかうことにした。Found」というエラーがでた。これはrpmのパスが間違っているためで、「epel-release-7-9.noarch.rpm」に変更したら解決できた。Serverをインストールする。EPELはアップデート済みなのでそのままインストールできる。...killed.これでひとまずRabbitMQのインストールが終わった。RabbitMQをGUIで管理できるプラグインを追加するRabbitMQには、プラグインを追加(有効)することで機能を拡張することができる。いうことで、GUI管理ツールのプラグインを追加する。rabbitmq_managementを追加するGUI管理ツールをつかうためには、rabbitmq_managementを追加するだけでよい。restartこれでhttp://localhost:15672で管理画面にアクセスすることができるようになった。リモートからアクセスできるようにするさきほどhttp://localhost:15672で管理画面にアクセスできると書いたが、実はデフォルトのままではリモートからアクセスすることができない。user@123.123.123.123これでhttp://localhost:25672にアクセスすると、ログイン画面が表示されるので、「guest/guest」でログインする。※guestユーザはセキュリティ上好ましくないのでユーザの追加について後述するこの管理画面を使えば、メッセージのたまり具合や、ユーザの作成などができる。リモートからアクセスできるようにする(未解決)本来の設定の仕方について書いていく。私のやり方が間違っていたらご指摘お願いします。/etc/rabbitmq/rabbitmq.congifのloopback_usersの部分を修正する。restartしかし私の環境だと、RabbitMQを起動しようとしたときに以下のようなエラーがでる。getenforceDisabledためしに/etc/rabbitmq/rabbitmq.configのバックアップをとり、必要な設定だけを以下のように書き加えたら、RabbitMQを起動することはできた。リモートからのアクセスはできなかった。さくらのクラウドでRabbitMQをインストールする前述までの処理をひと通りやってハマりにハマったあとに、さくらのクラウドにRabbitMQのスタートアップスクリプトがあることに気づいた。これを使えば煩わしい手順を踏まずにたった数分でRabbitMQをインストールして、GUI管理画面を見ることができた...。管理者ユーザを作成し、guestユーザを削除するセキュリティ上、guestユーザは好ましくない。いうかguestユーザはlocalhostでしかログインできない。いうことで、別途管理用のユーザをつくる。管理ツールを使えばGUIで作成することも可能だが、今回はコマンドで実行する。guestこれで管理ツールには「admin/password」でログインできるようになる。次回以降に、Node.jsでRabbitMQのキューを操作する方法をまとめていく。Serverでの開発を行った時にハマったのが、Nullと空文字("")の扱いの違いだった。結論から言うと、以下のようになっている。...【C#】いろんなパディング(空白埋めやゼロ埋め)固定長IFファイルの作成では必要不可欠な処理、パディング。文字長を一定にしたり、ブラの隙間に夢を詰めたりいろんな使い方がされる。このエントリでは以下の3種類の方法を紹介する。2)」とかいたらコンパイラさんに怒られてしまった。LEFT関数は特に問題ないが、可変長データ...Excelで「データを貼り付けできません。」というエラーが出た時の対処法Excelでなぜか図形が挿入できない。オブジェクトを貼り付けることができない。こんなしょうもないことで、10分を無駄にしてしまった。その対処法をまとめる。Google先生に聞いたところ、以下の対処法があったが、どれもよくわからなかった。結論から言うと、VBAにはTry-Catch-Finallyが存在しない。Errorステートメントとラベルを使う。簡単な例外処理(エラーハンドリング)は以下のとおり。」というエラーになる。ToStringプログラミングを行ううえで使う頻度が高いのが型変換(キャスト)。基本的なキャストには以下のようなものがある。どれも型変換に使うメソッドだが...position:stickyでスクロール可能なテーブルの行・列ヘッダを固定するテーブルに表示する情報が多いとき、行ヘッダや列ヘッダを固定して表示したいときがある。使うと簡単に実装できる。IEは対応していないため、ポリフィルが必要となる。完成予想イメージは以下のとおり。昼食を完全食COMPにかえて1ヶ月たったので、経緯や感想を綴ろうと思う。Standard.、SAVASホエイプロテインとの組み合わせについても書く。時間ではなく、技術を売る技術者になることを目標にブログやってます!ご用の方は、ページ右の問い合わせフォーム(※PC用ページのみ)、またはTwitterまでご連絡ください。当ブログの利用するにあたり、何らかのトラブルや損害などが生じても当ブログ管理人は一切責任を負いません。許諾や有無など、その内容については一切の保証を致しかねます。