连接 RabbitMQ
final ConnectionFactory factory = new ConnectionFactory();
factory.setHost(IP_ADDRESS);
factory.setPort(PORT);
factory.setUsername(USERNAME);
factory.setPassword(PASSWORD);
factory.setVirtualHost(VIRTUAL_HOST);
final Connection connection = factory.newConnection();
final Channel channel = connection.createChannel();
Copied!
1
2
3
4
5
6
7
8
以上代码分别给定参数:IP、端口、用户名、密码等连接 RabbitMQ,还可以使用 URI 的方式来实现
final ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://username:password@ipAddress:port/virtualHost");
final Connection connection = factory.newConnection();
final Channel channel = connection.createChannel();
Copied!
1
2
3
4
Connection 可以用来创建多个 Channel,但是 Channel 不能线程共享使用。
channel 的开启有一个 isOpen 方法可以得知
com.rabbitmq.client.impl.ShutdownNotifierComponent#isOpen
@Override
public boolean isOpen() {
synchronized(this.monitor) {
return this.shutdownCause == null;
}
}
Copied!
1
2
3
4
5
6
7
在生产环境中不建议使用,来判断。我们认为 connection.createChannel() 返回后,就创建信道成功了。包括 isOpen 源码上也说明了,建议捕获异常。不建议调用该方法
应该使用 try 的方式来捕获异常。
final Connection connection = factory.newConnection();
final Channel channel = connection.createChannel();
try {
channel.basicQos(1);
} catch (IOException e) {
e.printStackTrace();
}