添加jar包
<!-- 消息队列 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
1.ConnectionFactory factory. 用于注入消息队列的ip,客户端端口,账户,密码,虚拟主机名
2.Connection connection //连接
3.Channel channel //定义队列
4.QueueingConsumer consumer //消费者
5.QueueingConsumer.Delivery delivery
6.String msg
queueDeclare(队列名称,是否持久化,是否生产者独有,队列无消息是否删除,传递额外参数) //定义队列
exchangeDeclare(交换机名称,”3种模式之一”); //定义交换机;
queueBind(队列名称,交换机名称,路由key); //将队列和交换机绑定
basicPublish(交换机名称,路由key,参数设定props一般为null,传输字节码文件msg.getBytes()) //发送消息
basicConsume(队列名称,是否自动回复,消费者名称) //将队列和消费者绑定
basicQos(1) //每个消费者获取消息个数
basicAck(delivery.getEnvelope().getDelivertTag(),multiple是否批量回复) //回复确认消
一、发布订阅模式fanout:
2=1.newConnection();
3=2.creataChannel();
3.exchangeDeclare(
3.basicPublish( //循环发送消息
//下面定义第一个消费者
3.queueDeclare(
3.queueBind(
3.basicQos(1个);
4=3 //新建对象参数传入
3.basicConsume(
5=4.nextDelivery(); //这里开始循环获取消息
6=5 //新建对象参数5.getBody()传入
得到6
3.basicAck(
//第二个消费者是一样的操作
二、路由模式direct:
2=1.newConnection();
3=2.creataChannel();
3.exchangeDeclare(
//下面3行发送消息,定义队列,队列和交换机绑定
3.queueDeclare(
3.basicPublish( //循环发送消息
3.queueBind(
//下面定义第一个消费者
3.basicQos(1个);
4=3 //新建对象参数传入
3.basicConsume(
5=4.nextDelivery(); //这里开始循环获取消息
6=5 //新建对象参数5.getBody()传入
得到6
3.basicAck(
//下面是第二个消费者绑定第二条队列,第二条队列与交换机绑定
三、主题模式topic:
流程和路由模式是一样的,区别在路由key,根据一类路由key来发送消息或者是队列与交换机绑定
basicPublish和queuebind 这两个方法里的路由key
路由key的通配符
*号:能够匹配单个字符或者词组(只能匹配一个.)
#号:能够匹配多个字符,能够匹配多个”.”