1、配置rq连接信息(rq.properties)
rb.host.batch=192.168.1.1:5672,192.168.1.2:5672
2、获取配置文件值并处理生成Address[]
private static Address[] splitAddress(String hostAddress) { String[] hostArray = hostAddress.split(","); Address[] addArray = new Address[hostArray.length]; for (int i = 0; i < hostArray.length; i++) { addArray[i] = new Address(hostArray[i].split(":")[0], Integer.parseInt(hostArray[i].split(":")[1])); } return addArray; } |
3、创建连接、channel、queue
//address数组 public static void conRabbitMQ(Address[] addresses) { ConnectionFactory factory = new ConnectionFactory(); factory.setUsername("guest"); factory.setPassword("guest"); try { Connection connection=factory.newConnection(addresses); Channel channel= connection.createChannel(); channel.queueDeclare("queueName",true,false,false,null); channel.queueBind("queueName","exchangeName","queueName"); } catch (IOException e) { logger.error(e.getMessage(), e); return null; } catch (Exception e) { logger.error(e.getMessage(), e); return null; } } |
4、总结
使用ConnectionFactory的newConnection(Address[] addrs) 方法创建连接,支持多个host地址,程序运行中通过connection.isOpen()来判断当前mq服务是否正常,如果值为false,会使用addrs数组中其他的host地址创建连接,重新创建连接需要创建connection和channel,channel用于发送和接收消息。