今天才接触rabbitmq 尝试着远程连接 出现如下问题
no exchange 'amq.gen-dph9b_NNsklGAYLcScl2aA' in vhost '/'
这个问题是绑定交换机才出现的,不绑定交换机,直接连接指定队列,是没有错的,能收到消息
String queue = channel.queueDeclare().getQueue(); channel.queueBind(queue, EXCHANGE_NAME, "");
factory.setHost("192.168.100.186"); factory.setPort(5672); factory.setUsername("rabbitmq"); factory.setPassword("rabbitmq");
本机产生的能够收到消息,没错
远程的在启动的时候就报错了,一下是错误代码:
Exception in thread "main" 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.exchangeBind(ChannelN.java:738) at com.rabbitmq.client.impl.ChannelN.exchangeBind(ChannelN.java:751) at com.rabbitmq.client.impl.ChannelN.exchangeBind(ChannelN.java:61) at Rev.Rev.main(Rev.java:31) Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'amq.gen-Q0hpa_A3bGWdF_g0LyzTwA' in vhost '/', class-id=40, method-id=30) 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) ... 4 more Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'amq.gen-Q0hpa_A3bGWdF_g0LyzTwA' in vhost '/', class-id=40, method-id=30) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:478) at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:315) 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:550) at java.lang.Thread.run(Unknown Source)
某度和某歌搜索no exchange 'amq.gen-dph9b_NNsklGAYLcScl2aA' in vhost '/'
完全没有有用的信息....
1.rabbitmq会有默认的exchange,rabbitmqctllist_exchanges可以查看,所以你不指定exchange,会使用默认的exchange;
2.发送消息,指定queuename是可以的,routingkey如果指定为queue-name也是可以的,这样做只能一个queue收到,其他queue收不到了。
3.一般不建议使用指定queuename.因为消息队列本身就是松耦合的,消息发布者不应该去关心queuename的。
1.rabbitmq会有默认的exchange,rabbitmqctllist_exchanges可以查看,所以你不指定exchange,会使用默认的exchange;
2.发送消息,指定queuename是可以的,routingkey如果指定为queue-name也是可以的,这样做只能一个queue收到,其他queue收不到了。
3.一般不建议使用指定queuename.因为消息队列本身就是松耦合的,消息发布者不应该去关心queuename的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。