//设置账号信息,用户名、密码、vhost
factory.setVirtualHost("/");
factory.setUsername("guest");
factory.setPassword("guest");
//通过工厂拿到连接
connection = factory.newConnection();
#### 2.创建信道
/**
*
* @param channelNumber 要分配的通道编号
* @return 返回一个信道对象,如果编号存在则返回null
* @throws IOException if an I/O problem is encountered
*/
Channel createChannel(int channelNumber) throws IOException;
#### 3.创建交换机
/**
* 声明一个交换机。
*
* @param exchange 交换机名称
* @param type 交换机类型(DIRECT, FANOUT, TOPIC, HEADERS;)
* @param durable 是否开启持久化
* @param autoDelete 在不被使用时是否自动删除
* @param internal 是否能由客户端直接发布到该交换机
* @param arguments 交换机其他构造参数
* @return 返回一个声明成功的方法表明交换机被成功创建
*
*/
Exchange.DeclareOk exchangeDeclare(String exchange,
BuiltinExchangeType type,
boolean durable,
boolean autoDelete,
boolean internal,
Map<String, Object> arguments) throws IOException;
交换机参数:
>
> 1.exchange:交换机名称
> 2.type:交换机类型(DIRECT, FANOUT, TOPIC, HEADERS)
> 3.durable:是否开启持久化,开启后交换机会在服务重启后重新加载
> 4.autoDelete:在不被使用时是否自动删除
> 5.internal:是否能由客户端直接发布到该交换机,如果为True的话表示当前Exchange是RabbitMQ内部使用,我们创建的Queue不会消费该类型交换机下的消息
> 6.arguments:交换机其他构造参数
>
>
> alternate-exchange:备用交换机名称(当前交换机不可用时发送至备用交换机)
>
>
>
#### 4.创建队列
/**
* 声明队列
*
* @param queue 队列名称
* @param durable 是否开启持久化
* @param exclusive 是否为独占队列
* @param autoDelete 在不被使用时是否自动删除
* @param arguments 队列其他构造参数
* @return 返回一个声明成功的方法表明队列被成功创建
*
*/
Queue.DeclareOk queueDeclare(String queue,
boolean durable,
boolean exclusive,
boolean autoDelete,
Map<String, Object> arguments) throws IOException;
队列参数
>
> 1.queue 队列名称
> 2.durable 是否开启持久化,开启后队列会在服务重启后重新加载
> 3.exclusive 是否为独占队列,就是说声明为独占队列时,该队列只对当前连接connection可见,其他连接不可见,且在当前连接断开时会删除当前队列,注意这里断开会删除指的是connection断开不是channle断开
> 4.autoDelete 在不被使用时是否自动删除,指在所有消费者都断开后删除该队列并丢弃队列中的消息
> 5.arguments 队列其他构造参数
>
>
> ![]()
>
>
> x-expires:在自动删除队列之前,队列存活时间(单位毫秒)。
>
>
> x-message-ttl:在队列中的消息被丢弃之前存活多长时间(单位毫秒)。
>
>
> x-overflow:设置队列溢出行为。当达到队列的最大长度时消息会发生什么。有效值为drop-head、reject-publish或reject-publish-dlx。仲裁队列类型仅支持drop-head和reject-publish。