RabbitMQ好文

安装RabbitMQ

Ubuntu

添加RabbitMQ源:

sudo echo "deb http://www.rabbitmq.com/debian testing main" >> /etc/apt/sources.list

将RabbitMQ公钥加入我们的信任密钥列表,避免一些关于unsigned packages的警告。

wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo apt-key add rabbitmq-signing-key-public.asc

更新软件列表,安装rabbitmq-server

apt-get update
apt-get install rabbitmq-server

rabbitmq的相关目录:

$ find / -name .erlang.cookie
/var/lib/rabbitmq/.erlang.cookie

执行apt-get update之后报错:

W: GPG error: http://www.rabbitmq.com testing InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6B73A36E6026DFCA

使用apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B73A36E6026DFCA解决

启动MQ:

service rabbitmq-server start

发现通过ip:15672还是无法访问,那么,还需要进一步设置,启用RabbitMQWeb管理插件:

rabbitmq-plugins enable rabbitmq_management

然后就可以通过浏览器访问了,当使用guest/guest登陆时,报错,User can only log in via localhost

解决办法:

rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

添加用户参考:

CentOS

yum -y install epel-release
yum -y update
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
rabbitmq-plugins enable rabbitmq_management

where -U to update if package is already installed, -v for verbose output, -h to print hash output

坑1:

在执行systemctl start rabbitmq-server.service之后,报错:Failed to start RabbitMQ broker:

原因,在运行systemctl start rabbitmq-server.service之前,我先执行了rabbitmq-plugins enable rabbitmq_management,导致/etc/rabbitmq/下生成了enabled_plugins。解决启动错误,先删除该文件。

此外,启动出错时,还有可能因为防护墙的原因,可以参考此篇文章关闭。

防火墙关闭解决办法:

firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --reload
setsebool -P nis_enabled 1

或者粗暴点的办法(不推荐)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0 (记得/etc/selinux/config也改成 disable,否则重启就不生效了)
``` 坑2: rabbitmq服务总算start成功了,但是执行`rabbitmq-plugins enable rabbitmq_management`还是报错: ```
[root@SHA1000154085 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@SHA1000154085... failed.
Error: {cannot_read_enabled_plugins_file,"/etc/rabbitmq/enabled_plugins",
eacces}
``` 网上看到一篇文章,抱着绝望的心情执行了: ```
umask 0022; rabbitmq-plugins enable rabbitmq_management
``` 竟然OK了!!! 坑3: 报错:`"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only"` 解决办法-[unable to start rabbitmq server on ubuntu 10.04](https://stackoverflow.com/questions/24610367/unable-to-start-rabbitmq-server-on-ubuntu-10-04): ```
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie
``` 看来`.erlang.cookie`的属组也很关键,修改好之后是这样的:
```
-rw------- 1 rabbitmq rabbitmq 20 Jun 14 14:31 .erlang.cookie
``` ### 安装参考 - [stackoverflow-How to install Install rabbitmq server on centos7](https://stackoverflow.com/questions/32327873/how-to-install-install-rabbitmq-server-on-centos7)
- [How to Install RabbitMQ Server on CentOS 7](https://www.howtoforge.com/tutorial/how-to-install-rabbitmq-server-on-centos-7/)
- [RabbitMQ 基础](http://www.cnblogs.com/vincenshen/articles/6659589.html)
- [how-to-install-rabbitmq-on-centos-7](https://www.vultr.com/docs/how-to-install-rabbitmq-on-centos-7)
- [How to Install RabbitMQ on CentOS/RHEL 7/6 and Fedora](https://tecadmin.net/install-rabbitmq-on-centos/) ## RabbitMQ集群 - [rabbitmq 集群搭建](http://www.pandan.xyz/2017/02/11/rabbitmq%20%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/)
- [Using RabbitMQ in Cluster](https://dzone.com/articles/rabbitmq-in-cluster)
- [CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务与使用](https://segmentfault.com/a/1190000010702020)
- [Rabbitmq集群高可用测试](https://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html)
- [RabbitMQ集群和高可用配置的技巧](https://www.linuxprobe.com/rabbitmq-configuration.html) ### 修改hostname 临时修改hostname:`hostname <new hostname>` 推荐永久修改的方式: CentOS系
```
$vi /etc/sysconfig/network
HOSTNAME=yourhostname
``` Debian发行版的hostname的配置文件是`/etc/hostname`。 Ubuntu ```
vi /etc/hostname
``` 还需要修改`hosts`: ```
$vi /etc/hosts
127.0.0.1 node2
127.0.0.1 localhost node2 localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
```
最后`reboot`重启,输入`hostname`查看是否生效。 参考: - [CentOs6.5 修改主机名](http://www.ymq.io/2017/07/31/linux-localdomain/#3%E9%87%8D%E5%90%AF%E6%9C%8D%E5%8A%A1%E5%99%A8)
- [修改centos等linux的hostname-永久生效](https://blog.csdn.net/yangshangwei/article/details/52878530) ## 文件路径 ```
[root@SHA1000154085 rabbitmq]# find / -name rabbitmq-server /usr/lib/ocf/resource.d/rabbitmq/rabbitmq-server
/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.10/sbin/rabbitmq-server
/usr/lib/rabbitmq/bin/rabbitmq-server
/usr/sbin/rabbitmq-server
/etc/logrotate.d/rabbitmq-server
``` ## 重要方法 ### factory.setAutomaticRecoveryEnabled() ```
//默认rabbitmq client是打开了自动recover连接的能力的(5.0版本的rabbitmq 默认是打开的)
factory.setAutomaticRecoveryEnabled(true); ExecutorService es = Executors.newFixedThreadPool(20);
return factory.newConnection(es);
``` ### channel.basicQos()
channel.basicQos(1); // accept only one unack-ed message at a time (see below) ### 参考-重要方法 - [rabbitmq channel参数详解](https://www.cnblogs.com/piaolingzxh/p/5448927.html)
- [RabbitMQ指南(上)](http://www.importnew.com/24319.html)

RabbitMQ 入门指南——安装的更多相关文章

  1. Ansible 入门指南 - 安装及 Ad-Hoc 命令使用

    安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...

  2. RabbitMQ入门教程——安装及配置

    RabbitMQ是一个消息代理,一个消息系统的媒介,提供了一个通用的消息发送及接收平台,并且能够保障消息传输过程中的安全.使用erlang语言开发,开源,在易用性.扩展性.高可用性等方面表现不俗 技术 ...

  3. RabbitMQ 入门指南(Java)

    RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成.本文简单介绍了如何使用 RabbitMQ,假定你已经配置好了rabbitmq服务器. Rabbit ...

  4. RabbitMQ 入门指南——初步使用

    MQ的消息持久化 https://www.rabbitmq.com/tutorials/tutorial-two-java.html When RabbitMQ quits or crashes it ...

  5. RabbitMQ入门指南

    消息队列(Message Queue,以下简称MQ)常用于异步系统的数据传递.若不用MQ,我们只能[在应用层]使用轮询或接口回调等方式处理,这在效率或耦合度上是难以让人满意的.当然我们也可以在系统间保 ...

  6. redis入门指南-安装redis

    纸上得来终觉浅 绝知此事要躬行 Redis官方不支持window.微软发布了可在redis的分支.不建议使用 但我确实用了. win7 redis2.8.4  php5.6  apache2.4 ht ...

  7. RabbitMQ入门与使用篇

    介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面都非常的优秀 ...

  8. .NET 环境中使用RabbitMQ RabbitMQ与Redis队列对比 RabbitMQ入门与使用篇

    .NET 环境中使用RabbitMQ   在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的 ...

  9. Ansible 入门指南 - ansible-playbook 命令

    上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...

随机推荐

  1. c#如何判断字符串是否含中文

    如代码: static bool ContainChinese(string input) { string pattern = "[\u4e00-\u9fbb]"; return ...

  2. sql server得到某个数据库的所有表和所有字段

    select b.name tablename,a.name as columnnamefrom sys.columns a,sys.objects b,sys.types cwhere a.obje ...

  3. v1版本

    <?php use yii\helpers\Html; use yii\helpers\Url; use yii\widgets\DetailView; use yii\grid\GridVie ...

  4. Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

  5. 基础 MySQL

    .一.MySQL概述 1.什么是数据库  答:数据的仓库,如:在ATM的示例中我们创建了一个 DB 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL ...

  6. 激活win10

    网盘地址 http://pan.baidu.com/s/1nvc5I1V 里面是2个东西,一个是rar解压缩软件,一个是激活工具本体 一个解压缩软件,一个激活工具的压缩包 安装解压软件,就是WINRA ...

  7. Error resolving version for plugin 'org.codehaus.mojo:tomcat-maven-plugin'

    从 SNV 导入新工程后,启动工程,但 Maven 报错: Error resolving version for plugin 'org.codehaus.mojo:tomcat-maven-plu ...

  8. TCP客户端图片上传服务端保存本地示例

    //TCP客户端public class TCPClient { public static void main(String[] args)throws IOException { Socket s ...

  9. There is no session with id XXX

    系统采用 shiro + redis + spring来做的权限控制系统.   登录时报 there is no session with XXX 跟踪断点发现,系统查询session时,查不到red ...

  10. linux系统电视盒子到底是什么

    经常看到各种大神说今天刷了什么linux系统可以干嘛干嘛了,刷了乌班图可以干嘛干嘛了,但是身为一个小白,对这种名词都是一知半解.所以这边给大家科普一下,什么是linux系统?电视盒子刷了这个可以干啥? ...