连接 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@Overridepublic 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();}
