學習rabbitMQ時 自己寫了一個發送者 案例 運行后報錯:
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user 'admin', class-id=10, method-id=40)
代碼如下:
package helloWorld;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class send {
private final static String QUEUE_NAME="hello";
public static void main(String[] args) throws IOException, TimeoutException {
//創建鏈接工廠
ConnectionFactory factory = new ConnectionFactory();
//設置rabbitMQ地址
factory.setHost("127.0.0.1");
factory.setUsername("admin");
factory.setPassword("123456");
//建立連接
Connection connection = factory.newConnection();
//獲取信道
Channel channel = connection.createChannel();
//聲明隊列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//發布消息
String message = "Hello World 2";
channel.basicPublish("", QUEUE_NAME , null, message.getBytes("UTF-8"));
System.out.println("發送了消息"+message);
//關閉鏈接
channel.close();
connection.close();
}
}
從報錯看應該獲取鏈接時報錯了 看了下我配置的 用戶信息
因為我的virtual host 自己學習的時候修改了下配置 不是默認的 / 改為 /1

加上了代碼 factory.setVirtualHost("/1"); 重新測試可以成功發送了

