ラビットMQの取り付け


erlangをインストール
  • インストール依存度:yum install ncurses-devl
  • インストールパッケージをダウンロードします。http://www.erlang.org/downloads/
  • は、解凍後のインストールパッケージに入り、./configure --prefix=/usr/local/erlang/ --without-javac
  • を実行する。
  • コンパイルインストール:make&make install
  • ラビットMQの取り付け
  • インストールPython:yum install python -y
  • インストール依存xmlto:yum install xmlto
  • インストール依存simplejson:yum install simplejson
  • インストールパッケージをダウンロードします。https://www.rabbitmq.com/install-generic-unix.html
  • 解凍RabbiitMQ圧縮パケット:xz -d tar zxvfコマンドを使用して前後解凍
  • は解凍したファイルを/usr/localディレクトリの下にmoveします。私がデフォルトでインストールしたソフトウェアは全部このディレクトリの下にあります。mv /usr/local/rabbitmq
  • は、ラビットMQをオープンします。/usr/local/rabbitmq/sbinのディレクトリに入り、./rabbitmq-server &
  • を実行します。
  • ラビットMQを閉じます。/usr/local/rabbitmq/sbinのディレクトリに入り、./rabbitmqctl stop
  • を実行します。
  • ポートの状態を確認する:netstat -anp | grep 5672
  • Mac OSでは、sudo lsof -nP -iTCP: -sTCP:LISTENを使ってポートの状態を確認します。nはホスト名を表示しないことを表しています。-Pはポートの俗称を表示しないことを示しています。sudoを追加しないと、現在のユーザが実行しているプログラムを見ることができます。後にドススーlsof -nP -iTCP grep ‘8080’
  • を引き継ぐことができます。
  • プロセス情報を表示する:ps -ef | grep rabbit
  • インストールに問題があります。
  • エランを見つけられなかった時に発生したエラー:rabitmq-server:line 187:erl:command not found,解決方法:rabitmq-serverファイルの187行に
  • を追加しました。
    ERLANG_HOME=/usr/local/erlang21
    export PATH=$PATH:$ERLANG_HOME/bin
    
  • エランを見つけられなかった時に発生したエラー:rabitmq-env:line 415:exec:erl:not found,解決方法は1と同じで、rabitmq-envファイルの415行にerlangプロファイル
  • を追加します。
  • うまく接続できなかったエラー:org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused (Connection refused)、Spring BootとRabbiitMQを統合する時、以下のように設定されている接続ユーザはgustで、gustはリモート接続できないので、プロファイルを追加します。
  • spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    
    /usr/local/rabbitmq/etc/rabbitmqディレクトリの下に、rabbitmq.com figという設定ファイルを作成してください。中に記入してください。[{rabbit, [{loopback_users, []}]}].
  • もし接続できなかったら、ファイアウォールが5672ポートを開いているかどうかを確認します。もし開けていないなら、以下の操作を実行します。
    sudo vim /etc/sysconfig/iptables
    ## rabbitMQ          5672  
    -A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT
    #     
    sudo service iptables restart
    
    テストラビットMQ
    //       
    @Configuration
    public class MQConfig {
    	public static final String QUEUE = "queue";
    	@Bean
        public Queue queue() {
            return new Queue(QUEUE, true);
        }
    }
    
    //    
    @Service
    public class MQSender {
        @Autowired
        AmqpTemplate amqpTemplate;
        
        public void send(Object message) {
            String msg = RedisService.beanToString(message);
            log.info("send message:" + msg);
            amqpTemplate.convertAndSend(MQConfig.QUEUE, msg);
        }
    }
    
    //    
    @Service
    public class MQReceiver {
    
        @RabbitListener(queues = MQConfig.QUEUE)
        public void receive(String message) {
            log.info("receive message:" + message);
        }
    }
    
    //     
    	@RequestMapping("/rabbitmq")
        @ResponseBody
        public void rabbitmq() {
            mqSender.send("hello,dazou");
        }
    
      
    2019-04-14 16:51:51.545  INFO 13609 --- [nio-8080-exec-1] com.dazou.miaosha.rabbitmq.MQSender      : send message:hello,dazou
    2019-04-14 16:51:51.593  INFO 13609 --- [cTaskExecutor-4] com.dazou.miaosha.rabbitmq.MQReceiver    : receive message:hello,dazou