一 连接rabbitmq的两种方式
1.设置给定参数连接
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(USERNAME);
factory.setPassword(PASSWORD);
factory.setVirtualHost(virtualHost) ;
factory.setHost(IP ADDRESS);
factory . setPort(PORT) ;
Connection conn = factory.newConnection();
2.使用uri进行连接
factory.setUri( " amqp:lluserName : password@ipAddress:portNumber/virtualHost");
二 交换机的类型
bidingkey:队列与交换机绑定的时候指定
routingkey:客户端发送消息的时候指定
通常,可以认为bidingkey与routingkey 一致
direct (routingkey与bindingkey完全匹配的队列中)
topic(把消息路由到routingkey与bindingkey“通配符”匹配的队列中)
fanout(广播到所有与该交换机绑定的队列中)
headers(根据发送消息的header属性来匹配,比较少用)
三 交换机声明
1.常用声明
Exchange . DeclareOk exchangeDeclare(String exchange ,
String type , boolean durable ,
boolean autoDelete , boolean internal,
Map<String, Object> arguments) throws IOException ;
String exchange -> 交换机的名称
String type ->交换机的类型
boolean durable->是否持久化
boolean autoDelete->是否自动删除
条件:有绑定过队列或者其他交换机,当所有队列和交换机都解绑时,自动删除
boolean internal->是否内部交换机
说明:无法直接连接到交换机,只能通过其他交换机转发的方式,获取到消息
Map<String, Object> arguments ->其他参数(待补充)
2.不阻塞声明exchangeDeclareNowait不等待rabbitmq返回是否创建成功
3.交换机删除
a.exchangeDelete(String exchange) b.exchangeDeleteNowait(String exchange,boolean ifUnused)
c.exchangeDelete(String exchange,boolean ifUnused)
四.队列声明
queueDeclare (String queue , boolean durable , boolean exclusive ,
boolean autoDelete , Map<String Object> arguments) throws IOException;
String queue->队列名称
boolean durable->是否持久化
boolean exclusive->排他队列
说明:1.对其他connection不可见;2.其他链接不能再创建同名队列;3.链接关闭或者客户端退出的时候,删除(无论是否设置持久化)
boolean autoDelete->是否自动删除
说明:条件:1有被消费者连接过;2所有消费者都断开
argurnents:其他参数
注意:消费端创建队列的前提是,没有订阅信道上的队列,否则需要解绑,设置模式为“传输”,然后创建队列
不阻塞声明 queueDeclareNoWait
默认创建 queueDeclare()
创建一个由 RabbitMQ 命名的名称,这种队列也称之为匿名队列、排他的、自动删除的、非持久化的队列。
五 交换机与队列绑定
绑定:queueBind(String queue , String exchange , String routingKey, Map<String, Object> arguments)
解绑:queueUnbind (String queue , String exchange , String routingKey)
队列名 交换机名 路由键 绑定参数???
有Nowait方法
六 交换机绑定
类似5 使用 exchangeBind(String destination , String source , String routingKey)