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. java基础练习2

    1, 写一段代码, 可以取出任意qq邮箱地址中的qq号码 public class Test { public static void main(String[] args) { String str ...

  2. Robot Framework 遇到过的错误 1. Chrome打开无法数据网址,地址栏只显示data:,

    问题描述:用RF打开网页时未跳转到指定网址,而是显示data:, *** Settings ***Library SeleniumLibrary *** Test Cases ***Login_Tes ...

  3. .net 学习笔记2

      托管代码.非托管代码 语法糖: 写C#代码时,遵守简单的语法.编译时编译器将简单的写法编译成正式的复杂的写法. 如: 上面简写了方法,编译时编译器帮助生成完整的代码   Var 关键字指示 编译器 ...

  4. 【2017-04-25】winform公共控件、菜单和工具栏

    一.公共控件 公共控件很多的属性很多都相似,这些是大部分都相同的: +布局 - AutoSize:自动适应控件上文字内容- Location:位置- Margin:控件间的间距- Size:控件大小 ...

  5. MySql 存储过程 光标只循环一次

    [1]MqSql 存储过程 光标只循环一次 针对MySql存储过程,光标只循环一次就退出的场景,可能原因分析: (1)存储过程有问题(仔细检查语法.控制变量.条件等等) (2)保证存储过程正确.调用过 ...

  6. 做一次面向对象的体操:将JSON字符串转换为嵌套对象的一种方法

    背景与问题 在 <一个略复杂的数据映射聚合例子及代码重构> 一文中,将一个JSON字符串转成了所需要的订单信息Map.尽管做了代码重构和配置化,过程式的代码仍然显得晦涩难懂,并且客户端使用 ...

  7. 使用Hive读取ElasticSearch中的数据

    本文将介绍如何通过Hive来读取ElasticSearch中的数据,然后我们可以像操作其他正常Hive表一样,使用Hive来直接操作ElasticSearch中的数据,将极大的方便开发人员.本文使用的 ...

  8. 校正PHP服务器时间不准的问题

    关于怎样解决PHP服务器时间不准的问题,得针对不同的情况进行不同的处理. 下面是经常遇到的情况,及应对办法. 1.PHP服务器时区不对,使用下面代码修正: <?php $timezone = & ...

  9. Windows Services(NT)

    本文主要记录什么是Windows Service,及其主要组成?并通过一个列子来创建一个Windows Services,同时,记录几个在查资料碰到的问题. Windows Services全文简称N ...

  10. Qt浅谈之一:内存泄露(总结)

    一.简介       Qt内存管理机制:Qt 在内部能够维护对象的层次结构.对于可视元素,这种层次结构就是子组件与父组件的关系:对于非可视元素,则是一个对象与另一个对象的从属关系.在 Qt 中,在 Q ...