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#winform,知道图像路径,怎么在程序运行时往image里面添加图片

    貌似可以直接添加啊 ,要改变显示的图片,就是将图片的路径赋值给picturebox即可pictureBox1.ImageLocation="图片路径"动态的改变这个值就行了.

  2. Unity3d之表情动画--眨眼

    可通过BlendShape来实现眨眼动画,效果如下: 转载请注明出处:http://www.cnblogs.com/jietian331/p/7054673.html 代码如下: using Unit ...

  3. linux系统状态检测命令

    1.ifconfig命令 ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”. 使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时 ...

  4. pycharm python3.5 神奇的导入问题

    说明:pycharm目录中没有同名.py文件,则可以直接用import util导入: 若有同名.py文件,则导入的时候需要加入所在文件夹名称

  5. uvalive 4848 Tour Belt

    题意: 一个KTO被定义为一个特殊的连通块,这个连通块满足一个要求,这个连通块中的最短的边大于 与这个连通相连的不属于这个连通块的边中的最大值. 给出一个图,统计KTO里面的点有多少个.(一个点可以属 ...

  6. tomcat的JVM调优

    1.error场景 Tomcat 长期运行过程遇到Caused by: java.lang.OutOfMemoryError: PermGen space或java.lang.OutOfMemoryE ...

  7. QWidget 的 close 与 Qt::WA_DeleteOnClose

    [1]close 与 Qt::WA_DeleteOnClose简介 1.1 Qt源码 /*! Closes this widget. Returns \c true if the widget was ...

  8. 栈(stack)和堆(heap)

    栈(stack)和堆(heap), Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的.JVM运行时在内存中开辟一片内存区域,启动时在自己的内 ...

  9. JVM探秘3---垃圾回收机制详解

    众所周知,Java有自己的垃圾回收机制,它可以有效的释放系统资源,提高系统的运行效率.那么它是怎么运行的呢,这次就来详细解析下Java的垃圾回收 1.什么是垃圾? 垃圾回收回收的自然是垃圾,那么jav ...

  10. 微信小程序制作家庭记账本之二

    第二天,继续学习制作记账本,网上搜寻别人的源码进行学习,但是搜寻过程中总是能看到github这个东西,不清楚这是什么东西,明天继续努力吧.