解决RabbitMQ远程不能访问的问题

刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题:

出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的。

[这里是图片001]

[这里是图片002]

要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问。

这里主要介绍Unix和Windows的配置文件修改。

一、Windows

Windows环境下默认配置文件为目录/%RabbitMQ Server%/rabbitmq_server-3.3.5/etc下的rabbitmq.config.example文件,我们可以直接在这个文件中修改(可以不用去设置环境变量了),也可以自己再新建一个rabbitmq.config文件,然后把这个文件路径配置到环境变量中,这里介绍就直接修改rabbitmq.config.example文件。

注意:修改之前,需要先停止RabbitMQ服务!!不然是不能保存的!!!

配置之前需要先添加用户,用于外网的访问,可以使用命令行来实现添加用户,需要在RabbitMQ的安装目录sbin目录下执行:

1

duanwf@master: /opt/rabbitmq_server-3 .3.5 /sbin $?rabbitmqctl?add_user?admin?admin

也可以通过web管理页面来添加用户和密码,使用guest登录web管理页面http://localhost:15672,进入“admin”标签页,然后点击“Adda user”,输入对用的帐号密码,然后选择用户角色(一定要选择):

[这里是图片003]

为了授权该用户对VirtualHost"/" 的访问,用户添加之后,需要对该用户进行授权,不然运行会出现错误:

1

Caused?by:?com.rabbitmq.client.ShutdownSignalException:?channel?error;?reason:?{ #method<channel.close>(reply-code=403,?reply-text=ACCESS_REFUSED?-?access?to?queue?'hello'?in?vhost?'/'?refused?for?user?'admin',?class-id=50,?method-id=10),?null,?""}

详细错误日志为:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

java.io.IOException

? at?com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)

? at?com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)

? at?com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)

? at?com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:766)

? at?com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:61)

? at?com.asiainfo.mq.rabbitmq.rabbitmqtest.SendTest.main(SendTest.java:29)

Caused?by:?com.rabbitmq.client.ShutdownSignalException:?channel?error;?reason:?{ #method<channel.close>(reply-code=403,?reply-text=ACCESS_REFUSED?-?access?to?queue?'hello'?in?vhost?'/'?refused?for?user?'admin',?class-id=50,?method-id=10),?null,?""}

? at?com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)

? at?com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)

? at?com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343)

? at?com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216)

? at?com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)

? ...?3? more

Caused?by:?com.rabbitmq.client.ShutdownSignalException:?channel?error;?reason:?{ #method<channel.close>(reply-code=403,?reply-text=ACCESS_REFUSED?-?access?to?queue?'hello'?in?vhost?'/'?refused?for?user?'admin',?class-id=50,?method-id=10),?null,?""}

? at?com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:473)

? at?com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:313)

? at?com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)

? at?com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)

? at?com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533)

操作过程为:在Admin标签页下点击新增的用户"admin",进入授权页面,默认直接点击"set permission"即可:

[这里是图片004]

用户以及授权添加完成之后,在rabbitmq.config.example文件中,添加以下内容,保存后重启RabbitMQ服务:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

……

[

? {rabbit,

?? [%%

??? %%?Network?Connectivity

??? %%?====================

??? %%

??? %%?By?default,?RabbitMQ?will?listen?on?all?interfaces,?using

??? %%?the?standard?(reserved)?AMQP?port.

??? %%

??? {tcp_listeners,?[5672]},

??? {loopback_users,?[ "admin" ]},

……

?? ]}

].

在浏览器中输入http://192.168.0.124:15672实现通过IP地址访问,成功登录:

[这里是图片005]

测试用例见博文“RabbitMQ远程调用测试用例

二、Unix

unix环境下,配置文件在%/rabbitmq_server-3.3.5%/etc/rabbitmq/rabbitmq.config.example

1

root@master: /opt/rabbitmq_server-3 .3.5 /etc/rabbitmq #?vi?rabbitmq.config.example

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

%%?-*-?mode:?erlang?-*-

%%?----------------------------------------------------------------------------

%%?RabbitMQ?Sample?Configuration?File.

%%

%%?See?http: //www .rabbitmq.com /configure .html? for details.

%%?----------------------------------------------------------------------------

[

? {rabbit,

?? [%%

??? %%?Network?Connectivity

??? %%?====================

??? %%

??? %%?By?default,?RabbitMQ?will?listen?on?all?interfaces,?using

??? %%?the?standard?(reserved)?AMQP?port.

??? %%

??? {tcp_listeners,?[5672]},

??? {loopback_users,?[ "admin" ]},

??? ……

??? ]}

].

[这里是图片006]

[这里是图片007]

参考地址:

http://blog.haohtml.com/archives/15249

http://www.rabbitmq.com/access-control.html

https://www.rabbitmq.com/configure.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用RabbitMQ进行远程调用,需要对远程调用进行配置。具体操作步骤可以参考一篇名为《解决RabbitMQ远程不能访问问题》的文章,文章链接为http://www.linuxidc.com/Linux/2014-10/107917.htm。在该文章中,介绍了如何配置外部机器上的RabbitMQ,并进行远程调用的测试。 另外,在Java中进行远程连接调用RabbitMQ的实例代码也是可行的。你可以使用@RabbitListener注解来监听指定队列、指定exchange、指定routingKey的消息。同时,@RabbitListener还具有创建队列、exchange和routingKey的功能。为了启动这个功能,你需要创建一个启动类,如下所示: ```java @SpringBootApplication public class RabbitMQApp { public static void main(String[] args) { SpringApplication.run(RabbitMQApp.class, args); } } ``` 通过以上步骤,你就可以在Java中使用RabbitMQ进行远程调用了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [RabbitMQ远程调用测试用例](https://blog.csdn.net/weixin_35997546/article/details/116845963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [java远程连接调用Rabbitmq的实例代码](https://download.csdn.net/download/weixin_38648396/12776702)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot+rabbitMQ实现RPC远程调用](https://blog.csdn.net/u010395024/article/details/105191699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值