rabbitmq实现原理运行异常

异常情况处理 上篇最后提到了这个问题, consumer异常退出、queue出错、甚至rabbitMQ崩溃。因为它们都是软件 ,软件都会有bug,这是无法避免的。所以RabbitMQ在设计的时候也想到了这一点
在之前,消息分发给consumer后立即就会被标记为已消费,这时候如果consumber接到了一个消息但是还没有来的及处理就异常退出,那么这个消息的状态是已被消费的,于是就会造成消息丢失的问题。 可以看到在进行消费的方法里,第二个参数noAck(不进行确认)我们是设置为true。在这里我们应该把它改变成false,也就是 queue需要我们的consumer进行确认这个消息已被正常处理
处理的代码也很简单,一共有两个步骤。第一个把noAck改成false //消费结果需要进行确认
channel.BasicConsume("firstTest", false, consumer);
第二部分就是在我们消费完成后进行交付
//进行交付,确定此消息已经处理完成
channel.BasicAck(deliveryTag: e.DeliveryTag, multiple: false);
那么 ,如果我们没有进行交付会出现什么情况呢?& queue会把这个消息交给其它的consumer去处理,如果都没有交付的代码呢。那么这个消息会一直存在,所以,千万不要忘了进行交付!
消息的处理部分已经结束,下面可以说队列与消息的待久化。事实上关于队列的我们已经有了,可以看声明 queue的第二个参数durable已经是设置为true的。剩下的就是针对我们内容的,也就是消息的持久化
在发布消息的时候,可以看到第三个参数basicProperties传的是null的。这时候我们就应该创建一个IBasicProperties了
//内容的基本属性
var properties = channel.CreateBasicProperties();
//设置内容的持久化
properties.Persistent = true;
在发布消息的时候把perperties做成参数传进去,这时我们的更改已经完成了
channel.BasicPublish("firstExchange", routingKey: "firstExchange_Demo_firstTest", basicProperties: properties, body: msg);
可以说到最后一个了,在之前queue的消息分发是第n个消息给第n个consumer的,这就会造成最开始处理消息的consumer在处理完成后会有闲置的可能性,而后面的一直在忙,消息分发的不均匀造成了很大的资源浪费,所以我们需要的是把消息分发给闲置的consumber。
这个操作是在consumer中完成的,在声明频道之后就指定这个consumer在同一时间内只处理一个消息,在上个消息未交付之前不要给我再分发消息。这个操作是容易完成的
//公平分发、同一时间只处理一个消息。
channel.BasicQos(<span style="color: #, <span style="color: #, false);
阅读(...) 评论()线程“主”java.net.UnknownHostException异常在EC2实例上使用RabbitMQ Ubuntu rabbitmq
我正在运行一个EC2实例RabbitMQ Ubuntu。我已经开始运行了
它上面有Rabbit MQ,它正在监听公共IPv4。我提供了一个
自定义端口号15672,所以听到http://***AWS PUBLIC IP****:15672。一切都是
但是,当我正在写java c对于发送者和接收者都具有
主机上的错误,aws公共地址和rabbit mq端口也是如此
发件人错误:Exception in thread "main" java.net.UnknownHostException: http://52.90.84.218:15672
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at com.rabbitmq.client.DnsRecordIpAddressResolver.resolveIpAddresses(DnsRecordIpAddressResolver.java:83)
at com.rabbitmq.client.DnsRecordIpAddressResolver.getAddresses(DnsRecordIpAddressResolver.java:73)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:56)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:900)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:817)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:954)
at com.demo.Send.main(Send.java:19)
收货错误:
Exception in thread "main" java.net.UnknownHostException: http://52.90.84.218:15672
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at com.rabbitmq.client.DnsRecordIpAddressResolver.resolveIpAddresses(DnsRecordIpAddressResolver.java:83)
at com.rabbitmq.client.DnsRecordIpAddressResolver.getAddresses(DnsRecordIpAddressResolver.java:73)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:56)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:900)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:817)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:954)
at com.demo.Recv.main(Recv.java:24)
当我使用localhost作为factory.sethost("localhost");
错误如下:
[AMQP Connection 127.0.0.1:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
com.rabbitmq.client.MalformedFrameException: AMQP proto we are version 0-9-1, server sent signature 3,1,0,0
at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:170)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:107)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:571)
at java.lang.Thread.run(Unknown Source)
[AMQP Connection 0:0:0:0:0:0:0:1:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
com.rabbitmq.client.MalformedFrameException: AMQP proto we are version 0-9-1, server sent signature 3,1,0,0
at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:170)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:107)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:571)
at java.lang.Thread.run(Unknown Source)
Exception in thread "main" java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:105)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:101)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:353)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:900)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:817)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:954)
at com.demo.Recv.main(Recv.java:24)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:372)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:297)
... 7 more
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP proto we are version 0-9-1, server sent signature 3,1,0,0
at com.rabbitmq.client.impl.Frame.protocolVersionMismatch(Frame.java:170)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:107)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:571)
at java.lang.Thread.run(Unknown Source)
让我知道e如果我有错,
发送者和接收者的java代码:
package com.
import com.rabbitmq.client.ConnectionF
import com.rabbitmq.client.C
import java.io.IOE
import java.util.concurrent.TimeoutE
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.C
import com.rabbitmq.client.C
import com.rabbitmq.client.DefaultC
import com.rabbitmq.client.E
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
// TODO Auto-generated method stub
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
Consumer consumer = new DefaultConsumer(channel) {
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
channel.basicConsume(QUEUE_NAME, true, consumer);
发件人代码:
package com.
import com.rabbitmq.client.ConnectionF
import com.rabbitmq.client.C
import java.io.IOE
import java.util.concurrent.TimeoutE
import com.rabbitmq.client.C
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("http://52.90.84.218:15672");
Connection con = factory.newConnection();
Channel channel = con.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello Santosh";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
con.close();
| 最后更新于
UnknownHostException: http://52.90.84.218:15672
意味着你将一个URL传递给了一个需要一个空主机名或IP的方法
地址。即该API期待着理所当然t 52.90.84.218而不是完整的网址。
因此,你有
factory.setHost("http://52.90.84.218:15672");
factory.setHost("52.90.84.218");
factory.setPort(15672);
登录后方可回帖& RabbitMq学习记录六:消费者异常退出,消息未ack,接口对外未幂等
RabbitMq学习记录六:消费者异常退出,消息未ack,接口对外未幂等
一个线上运行的队列中,同事反馈说发现一个消息被重复消费了。
还原初始场景:前端A系统下单完成后,会把订单各种信息推送至队列,后端B系统启动3个进程来处理订单信息。这时候发现订单出现重复了,一个订单号被入库2次,甚至多次。
排除了A系统生产者不会重复产生消息,那肯定就是B的消费者有问题。
经过排查,发现:代码中开启了消费者ack确认,但是某条json数据信息不完整,导致代码在执行数据库insert这一步的时候失败,进程退出,supervisor又重启了这个进程。这个时候,如果一个消费者应用崩溃掉(此时连接会断掉,broker会得知),但是broker尚未获得ack,那么消息会被重新放入队列。有脚本1、2、3,脚本2异常退出,消息未被ack,然后被supervisor重启,该条消息又转而投递给了1,脚本1啪啦啪啦执行,遇到insert操作又退出。。。。
归根到底,rabbitmq在投递消息的时候,不会重复投递,而是消费者进程有问题,在业务上没保证幂等。
解决方案:
1、业务代码中,数据库操作带事务,逻辑改动较大。
2、引入redis做订单号的kv存储,用来做判重处理。改动较小。
https://my.oschina.net/hackandhike/blog/883850
https://cloud.tencent.com/document/product/406/8303
http://xiaorui.cc//%E8%A7%A3%E5%86%B3rabbitmq%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%8F%8A%E9%87%8D%E5%A4%8D%E6%B6%88%E8%B4%B9%E9%97%AE%E9%A2%98/> rabbitmq安装及异常处理
rabbitmq安装及异常处理
2018阿里云全部产品优惠券(升级也可以使用,强烈推荐!!!)领取地址:
相关推荐:Sql server 2008 安装时可能会发生错误,应用程序中发生无法处理的异常。未能加载文件或程序集“System,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c”或它的某一个依赖项。系统找不到指定的文件。(C:\user\Administrator\AppData\lo
& & & & 官网:
& & & &&https://www.rabbitmq.com/install-standalone-mac.html
安装erlang语言环境
安装依赖文件
yum install ncurses-develyum -y install opensslyum -y install sslyum -y install xmltoyum -y install python-simplejsonyum -y install python
进入&&选择源文件下载
wget&tar zxvf otp_src_17.5.tar.gzcd otp_src_17.5
阅读HOTO/INSTALL.md文件
./configuremake && make install
安装完成以后,执行erl看是否能打开eshell,用’halt().’退出,注意后面的点号,那是erlang的结束符。
[root@iZ113aowxo2Z ~]# erlErlang/OTP 17 [erts-6.4] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]Eshell V6.4 (abort with ^G)1& 9+1.102& halt().
安装RabbitMQ
yum install xmlto
创建主文件夹
mkdir rabbitmqcd rabbitmq
直接使用RPM
wget&rpm -ivh rabbitmq-server-3.6.0-1.noarch.rpm
编译安装包进入
wget&xz -d rabbitmq-server-3.6.0.tar.xztar xvf rabbitmq-server-3.6.0.tarcd rabbitmq-server-3.6.0makemake install TARGET_DIR=/opt/rabbitmq SBIN_DIR=/opt/rabbitmq/sbin MAN_DIR=/opt/rabbitmq/man DOC_INSTALL_DIR=/opt/rabbitmq/doc
rabbitmq-server -detached
rabbitmqctl status
启用管理插件
mkdir /etc/rabbitmq/rabbitmq-plugins enable rabbitmq_management
rabbitmqctl stop
添加账号PS:默认账号guest只能在localhost访问
rabbitmqctl add_user admin admin
设置管理员
rabbitmqctl set_user_tags admin administrator
设置读写权限命令使用户admin具有/vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
rabbitmqctl set_permissions -p /vhost1 admin ‘.‘ ‘.‘ ‘.*’
rabbitmqctl list_users
加入账号到配置
vi /etc/rabbitmq/rabbitmq.config[{rabbit, [{loopback_users, [“admin”]}]}].
重启后&&登录管理界面了
& & & & 异常处理:
64位CentOS6.2安装erlang及rabbitmqServer
CentOS 6.2 64bit 安装erlang及RabbitMQ Server
1、操作系统环境(CentOS 6.2 64bit)
[root@leekwen ~]# cat /etc/issue
CentOS release 6.2 (Final)
Kernel \r on an \m
[root@leekwen ~]# cat /proc/cpuinfo grep &clflush size&
clflush size
clflush size
clflush size
clflush size
clflush size
clflush size
clflush size
clflush size
: 64 2、安装erlang依赖的基本环境
[root@leekwen ~]# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 3、导入erlang源,并安装erlang
[root@leekwen ~]# rpm --import http://binaries.erlang-solutions.com/debian/erlang_solutions.asc
[root@leekwen ~]# wget -O /etc/yum.repos.d/erlang_solutions.repo
http://binaries.erlang-solutions.com/rpm/centos/erlang_solutions.repo
-- 22:29:49--
http://binaries.erlang-solutions.com/rpm/centos/erlang_solutions.repo
Resolving binaries.erlang-solutions.com... 46.235.224.136
Connecting to binaries.erlang-solutions.com46.235.224.136:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://packages.erlang-solutions.com//rpm/centos/erlang_solutions.repo [following]
-- 22:29:56--
http://packages.erlang-solutions.com//rpm/centos/erlang_solutions.repo
Resolving packages.erlang-solutions.com... 31.172.186.53
Connecting to packages.erlang-solutions.com31.172.186.53:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 245
Saving to: /etc/yum.repos.d/erlang_solutions.repo
100%[=================================================================================&] 245
22:30:09 (34.0 MB/s) - /etc/yum.repos.d/erlang_solutions.repo
[root@leekwen ~]# wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
Resolving tree.repoforge.org... 78.46.17.228
Connecting to tree.repoforge.org78.46.17.228:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm [following]
-- 22:30:54--
http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
Resolving apt.sw.be... 193.1.193.67
Connecting to apt.sw.be193.1.193.67:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12700 (12K) [application/x-redhat-package-manager]
Saving to: rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
100%[=================================================================================&] 12,700
22:31:07 (4.80 KB/s) - rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
[root@leekwen ~]# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
[root@leekwen ~]# rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
[root@leekwen ~]# yum update
[root@leekwen ~]# yum update --skip-broken
[root@leekwen ~]# yum install erlang 4、测试erlang环境
[root@leekwen ~]# erl
Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]
Eshell V5.10.4
(abort with ^G)
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
^C[root@leekwen ~]# 5、下载并安装rabbitmq-server&&
[root@leekwen ~]# wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.0/rabbitmq-server-3.3.0-1.noarch.rpm
-- 16:44:24--
http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.0/rabbitmq-server-3.3.0-1.noarch.rpm
Resolving www.rabbitmq.com... 192.240.153.117
Connecting to www.rabbitmq.com192.240.153.117:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: .7M) [application/x-redhat-package-manager]
Saving to: “rabbitmq-server-3.3.0-1.noarch.rpm”
100%[======================================&] 3,869,384
16:50:10 (11.2 KB/s) - “rabbitmq-server-3.3.0-1.noarch.rpm” saved [9384]
[root@leekwen ~]#
yum install rabbitmq-server-3.3.0-1.noarch.rpm
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* rpmforge: ftp.riken.jp
* updates: centos.ustc.edu.cn
Setting up Install Process
Examining rabbitmq-server-3.3.0-1.noarch.rpm: rabbitmq-server-3.3.0-1.noarch
Marking rabbitmq-server-3.3.0-1.noarch.rpm to be installed
Resolving Dependencies
--& Running transaction check
& Package rabbitmq-server.noarch 0:3.3.0-1 will be installed
--& Finished Dependency Resolution
Dependencies Resolved
================================================================================
Repository
================================================================================
Installing:
rabbitmq-server
/rabbitmq-server-3.3.0-1.noarch
Transaction Summary
================================================================================
1 Package(s)
Total size: 4.3 M
Installed size: 4.3 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : rabbitmq-server-3.3.0-1.noarch
Installed:
rabbitmq-server.noarch 0:3.3.0-1
Complete! 6、启动rabbitmq-server
[root@leekwen ~]# /etc/init.d/rabbitmq-server start
Starting rabbitmq-server:
FAILED - check /var/log/rabbitmq/startup_{log, _err}
rabbitmq-server.
[root@leekwen ~]# cat /var/log/rabbitmq/startup_err
[root@leekwen ~]# cat /var/log/rabbitmq/startup_log
ERROR: epmd error for host leekwen: address (cannot connect to host/port)
[root@leekwen ~]# hostname
[root@leekwen ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=leekwen
[root@leekwen ~]# cat /etc/hosts
localhost 7、以上操作排除了因为主机名不同导致RabbitMQ-Server启动报错的问题,请修改主机名(参见上述步骤),再次启动RabbitMQ-Server
[root@leekwen ~]# /etc/init.d/rabbitmq-server restart
Restarting rabbitmq-server: RabbitMQ is not running
FAILED - check /var/log/rabbitmq/startup_{log, _err}
rabbitmq-server. 8、结果同样报错,查看错误的日志:
[root@leekwen ~]# cat /var/log/rabbitmq/startup_log
RabbitMQ 3.3.0. Copyright (C)
GoPivotal, Inc.
Licensed under the MPL.
See http://www.rabbitmq.com/
##########
Logs: /var/log/rabbitmq/rabbit@leekwen.log
/var/log/rabbitmq/rabbit@leekwen-sasl.log
##########
Starting broker...
BOOT FAILED
===========
Error description:
{case_clause,
{{shutdown,
{failed_to_start_child,tcp_listener,
{cannot_listen,{0,0,0,0,0,0,0,0},5672,eaddrinuse}}},
{child,undefined,'rabbit_tcp_listener_sup_:::5672',
{tcp_listener_sup,start_link,
[{0,0,0,0,0,0,0,0},
[inet6,binary,
{packet,raw},
{reuseaddr,true},
{backlog,128},
{nodelay,true},
{linger,{true,0}},
{exit_on_close,false}],
{rabbit_networking,tcp_listener_started,[amqp]},
{rabbit_networking,tcp_listener_stopped,[amqp]},
{rabbit_networking,start_client,[]},
&TCP Listener&]},
transient,infinity,supervisor,
[tcp_listener_sup]}}}}
Log files (may contain more information):
/var/log/rabbitmq/rabbit@leekwen.log
/var/log/rabbitmq/rabbit@leekwen-sasl.log
Stack trace:
[{rabbit_networking,start_listener0,4,[]},
{rabbit_networking,'-start_listener/4-lc$^0/1-0-',4,[]},
{rabbit_networking,start_listener,4,[]},
{rabbit_networking,'-boot_tcp/0-lc$^0/1-0-',1,[]},
{rabbit_networking,boot_tcp,0,[]},
{rabbit_networking,boot,0,[]},
{rabbit,'-run_boot_step/1-lc$^1/1-1-',1,[]},
{rabbit,run_boot_step,1,[]}]
BOOT FAILED
===========
Error description:
{could_not_start,rabbit,
{bad_return,
{{rabbit,start,[normal,[]]},
{rabbit,failure_during_boot,
{case_clause,
{{shutdown,
{failed_to_start_child,tcp_listener,
{cannot_listen,{0,0,0,0,0,0,0,0},5672,eaddrinuse}}},
{child,undefined,'rabbit_tcp_listener_sup_:::5672',
{tcp_listener_sup,start_link,
[{0,0,0,0,0,0,0,0},
[inet6,binary,
{packet,raw},
{reuseaddr,true},
{backlog,128},
{nodelay,true},
{linger,{true,0}},
{exit_on_close,false}],
{rabbit_networking,tcp_listener_started,[amqp]},
{rabbit_networking,tcp_listener_stopped,[amqp]},
{rabbit_networking,start_client,[]},
&TCP Listener&]},
transient,infinity,supervisor,
[tcp_listener_sup]}}}}}}}}}
Log files (may contain more information):
/var/log/rabbitmq/rabbit@leekwen.log
/var/log/rabbitmq/rabbit@leekwen-sasl.log
{&init terminating in do_boot&,{rabbit,failure_during_boot,{could_not_start,rabb
use,{error,{{shutdown,{failed_to_start_child,tcp_listener,{cannot_listen,{0,0,0,
stener_sup,start_link,[{0,0,0,0,0,0,0,0},5672,[inet6,binary,{packet,raw},{reusea
networking,tcp_listener_started,[amqp]},{rabbit_networking,tcp_listener_stopped,
or,[tcp_listener_sup]}}}}}}}}}}}
tail: /var/log/rabbitmq/startup_log: file truncated
[root@leekwen ~]# cat /var/log/rabbitmq/startup_err
Crash dump was written to: erl_crash.dump
init terminating in do_boot () 9、出现如上的错误,可能是因为5672端口已经被占用的原因。
查看5672端口的情况,如果有进程占用此端口,请将它关闭后,重新启动RabbitMQ-Server;
[root@leekwen ~]# netstat -atn grep 5672
0 0.0.0.0:5672
[root@leekwen ~]# lsof -i:5672
TYPE DEVICE SIZE/OFF NODE NAME
1901 qpidd
TCP *:amqp (LISTEN)
[root@leekwen ~]# chkconfig qpidd off
[root@leekwen ~]# netstat -atn grep 5672
0 0.0.0.0:5672
[root@leekwen ~]# chkconfig qpidd --list
[root@leekwen ~]# /etc/init.d/qpidd stop
Stopping Qpid AMQP daemon:
[root@leekwen ~]# netstat -atn grep 5672
0 127.0.0.1:25672
127.0.0.1:60925
[root@leekwen ~]# lsof -i:5672
[root@leekwen ~]# /etc/init.d/rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server. 10、查看RabbitMQ服务启动的状态,并开启RabbitMQ的相应管理插件:
[root@leekwen ~]# rabbitmqctl status
Status of node rabbit@leekwen ...
[{pid,716},
{running_applications,[{rabbit,&RabbitMQ&,&3.3.0&},
{os_mon,&CPO
CXC 138 46&,&2.2.14&},
{mnesia,&MNESIA
CXC 138 12&,&4.11&},
{xmerl,&XML parser&,&1.3.5&},
{sasl,&SASL
CXC 138 11&,&2.3.4&},
{stdlib,&ERTS
CXC 138 10&,&1.19.4&},
{kernel,&ERTS
CXC 138 10&,&2.16.4&}]},
{os,{unix,linux}},
{erlang_version,&Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:30] [kernel-poll:true]\n&},
{memory,[{total,},
{connection_procs,2704},
{queue_procs,5408},
{plugins,0},
{other_proc,},
{mnesia,60240},
{mgmt_db,0},
{msg_index,24368},
{other_ets,789624},
{binary,13672},
{atom,594537},
{other_system,4841836}]},
{alarms,[]},
{listeners,[{clustering,25672,&::&},{amqp,5672,&::&}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,},
{disk_free_limit,},
{disk_free,},
{file_descriptors,[{total_limit,924},
{total_used,3},
{sockets_limit,829},
{sockets_used,1}]},
{processes,[{limit,1048576},{used,131}]},
{run_queue,0},
{uptime,83}]
[root@leekwen ~]# netstat -atn grep 5672
0 0.0.0.0:25672
[root@leekwen ~]# lsof -i:5672
DEVICE SIZE/OFF NODE NAME
beam.smp 716 rabbitmq
IPv6 1948888
TCP *:amqp (LISTEN)
[root@leekwen ~]# rabbitmq-plugins list
[ ] amqp_client
[ ] cowboy
0.5.0-rmq3.3.0-git4b93c2d
3.3.0-gite309de4
[ ] mochiweb
2.7.0-rmq3.3.0-git680dba8
[ ] rabbitmq_amqp1_0
[ ] rabbitmq_auth_backend_ldap
[ ] rabbitmq_auth_mechanism_ssl
[ ] rabbitmq_consistent_hash_exchange 3.3.0
[ ] rabbitmq_federation
[ ] rabbitmq_federation_management
[ ] rabbitmq_management
[ ] rabbitmq_management_agent
[ ] rabbitmq_management_visualiser
[ ] rabbitmq_mqtt
[ ] rabbitmq_shovel
[ ] rabbitmq_shovel_management
[ ] rabbitmq_stomp
[ ] rabbitmq_tracing
[ ] rabbitmq_web_dispatch
[ ] rabbitmq_web_stomp
[ ] rabbitmq_web_stomp_examples
[ ] sockjs
0.3.4-rmq3.3.0-git3132eb9
[ ] webmachine
1.10.3-rmq3.3.0-gite9359c7
[root@leekwen ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@leekwen ~]# rabbitmq-plugins enable mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_m
anagement_agent rabbitmq_management
Plugin configuration unchanged.
[root@leekwen ~]# rabbitmq-plugins list
[E] amqp_client
[ ] cowboy
0.5.0-rmq3.3.0-git4b93c2d
3.3.0-gite309de4
[E] mochiweb
2.7.0-rmq3.3.0-git680dba8
[ ] rabbitmq_amqp1_0
[ ] rabbitmq_auth_backend_ldap
[ ] rabbitmq_auth_mechanism_ssl
[ ] rabbitmq_consistent_hash_exchange 3.3.0
[ ] rabbitmq_federation
[ ] rabbitmq_federation_management
[E] rabbitmq_management
[E] rabbitmq_management_agent
[ ] rabbitmq_management_visualiser
[ ] rabbitmq_mqtt
[ ] rabbitmq_shovel
[ ] rabbitmq_shovel_management
[ ] rabbitmq_stomp
[ ] rabbitmq_tracing
[E] rabbitmq_web_dispatch
[ ] rabbitmq_web_stomp
[ ] rabbitmq_web_stomp_examples
[ ] sockjs
0.3.4-rmq3.3.0-git3132eb9
[E] webmachine
1.10.3-rmq3.3.0-gite9359c7
[root@leekwen ~]# rabbitmq-plugins list
[E] amqp_client
[ ] cowboy
0.5.0-rmq3.3.0-git4b93c2d
3.3.0-gite309de4
[E] mochiweb
2.7.0-rmq3.3.0-git680dba8
[ ] rabbitmq_amqp1_0
[ ] rabbitmq_auth_backend_ldap
[ ] rabbitmq_auth_mechanism_ssl
[ ] rabbitmq_consistent_hash_exchange 3.3.0
[ ] rabbitmq_federation
[ ] rabbitmq_federation_management
[E] rabbitmq_management
[E] rabbitmq_management_agent
[ ] rabbitmq_management_visualiser
[ ] rabbitmq_mqtt
[ ] rabbitmq_shovel
[ ] rabbitmq_shovel_management
[ ] rabbitmq_stomp
[ ] rabbitmq_tracing
[E] rabbitmq_web_dispatch
[ ] rabbitmq_web_stomp
[ ] rabbitmq_web_stomp_examples
[ ] sockjs
0.3.4-rmq3.3.0-git3132eb9
[E] webmachine
1.10.3-rmq3.3.0-gite9359c7
[root@leekwen ~]# netstat -atn grep 5672
0 0.0.0.0:25672
[root@leekwen ~]# netstat -atn grep 15672
[root@leekwen ~]# netstat -atn grep 55672
[root@leekwen ~]# /etc/init.d/rabbitmq-server restart
Restarting rabbitmq-server: SUCCESS
rabbitmq-server.
[root@leekwen ~]# netstat -atn grep 55672
[root@leekwen ~]# netstat -atn grep 5672
0 0.0.0.0:15672
0 0.0.0.0:25672
0 127.0.0.1:54463
127.0.0.1:25672
0 127.0.0.1:60321
127.0.0.1:25672
0 127.0.0.1:25672
127.0.0.1:56750
就可以用guest,guest登陆http://192.168.1.101:15672端口了。
注意:如果此时你从端口1登陆不了,请关闭CentOS6.2的防火墙,再次登陆,
如果仍然出现无法登陆的想象,查看日志后,显示:
=ERROR REPORT==== 20-Apr-:15 ===
webmachine error: path=&api/whoami&
&Unauthorized& 那么请运行如下的命令,增加用户admin,密码admin即可。&&
[root@leekwen ~]# rabbitmqctl add_user admin admin
Creating user &admin& ...
[root@leekwen ~]# rabbitmqctl list_users
Listing users ...
[administrator]
[root@leekwen ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user &admin& to [administrator] ...
[root@leekwen ~]# rabbitmqctl list_users
Listing users ...
[administrator]
[administrator]
...done. 到此,配置完成。&
https://www.rabbitmq.com/install-standalone-mac.html
安装erlang语言环境 安装依赖文件 yum install ncurses-devel yum -y install openssl yum -y instal
------分隔线----------------------------
相关阅读排行
相关最新文章
Coin163.com ( Coin163 ) All Rights Reserved &&}

我要回帖

更多关于 rabbitmq教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信