今天才接触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 '/'
完全没有有用的信息....
引用来自“xuanye_dtdream”的评论
1.rabbitmq会有默认的exchange,rabbitmqctl list_exchanges可以查看,所以你不指定exchange,会使用默认的exchange;
2.发送消息,指定queuename 是可以的,routingkey如果指定为queue-name也是可以的,这样做只能一个queue收到,其他queue收不到了。
3.一般不建议使用指定queue name.因为消息队列本身就是松耦合的,消息发布者不应该去关心queue name的。
1.rabbitmq会有默认的exchange,rabbitmqctl list_exchanges可以查看,所以你不指定exchange,会使用默认的exchange;
2.发送消息,指定queuename 是可以的,routingkey如果指定为queue-name也是可以的,这样做只能一个queue收到,其他queue收不到了。
3.一般不建议使用指定queue name.因为消息队列本身就是松耦合的,消息发布者不应该去关心queue name的。