开源框架rabbitMQ
RabbitMQ:
安装:
1.安装erlang开发环境。
2.安装RabbitMQ,安装RabbitMQ插件,这样可以在浏览器操作Rabbit MQ;
步骤:

rabbitMQ消息队列作为服务器,生茶者和消费者是客户端。
生产者步骤:
ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); factory.setVirtualHost("/");//rabbitmq默认虚拟机名称为“/”,虚拟机相当于一个独立的mq服务
1.通过创建一个连接工厂来来连接主机、端口号、用户名、密码。
2.通过这个工厂生成一个tcp连接,通过该连接创建通道。
3.通过通道定义一个队列
/** * 声明队列,如果Rabbit中没有此队列将自动创建 * param1:队列名称 * param2:是否持久化 * param3:队列是否独占此连接 * param4:队列不再使用时是否自动删除此队列 * param5:队列参数 */ channel.queueDeclare(QUEUE, true, false, false, null);
4.定义一个字符串消息
5.通过通道调用api,发布该消息。
消费者步骤:
1.创建工厂。创建连接,创建通道,声明队列。
2.通过通道调用api,确定监听哪个队列,监听成功,然后调用哪个方法。channel.basicConsume(QUEUE, true, consumer);
3.方法定义,通过这个方法就可以获得消息内容 DefaultConsumer consumer = new DefaultConsumer(channel) { }这个是匿名内部类,里边要实现一个handleDelivery方法,这个方法会被自动调用,可以在这个方法内处理消息。
1、发送端操作流程
1)创建连接
2)创建通道
3)声明队列
4)发送消息 2、接收端
1)创建连接
2)创建通道
3)声明队列
4)监听队列
5)接收消息
RabbitMQ消息队列使用流程文字化叙述:首先生产者即客户端,要创建连接,然后创建通道,通过通道创建交换机(声明交换机类型)和队列,然后绑定某个交换机和某个队列,并且指定路由key,这样发送消息给交换机时候,会指定路由key,然后交换机根据与自己绑定的队列看看有没有路由key相符合的,发送给它,发送wan以后,消费者监听到以后,就会调用相应的消费方法。
RabbitMQ工作模式:对于 任务过重或任务较多情况使用工作队列可以提高任务处理的速度。
1. 工作队列:使用默认的交换机(所有的队列都会和默认交换机连接,路由key是队列名字),发送消息时,路由key是队列的名字。
有两个或两个以上消费者监听同一个队列,然后轮流从队列取出消息。
一个交换机,一个队列,多个消费者。

2.发布订阅模式:适合那种注册成功,短信邮箱一起通知。
定义交换机,要选择交换机类型为发布订阅类型,绑定交换机和消息队列,不指定路由key,交换机会把消息发送给每一个消息队列。

3.路由模式:
定义新的交换机,要选择交换机类型为路由类型,需要绑定交换机和消息队列,绑定时需要指定消息队列在这个交换机中的路由key,然后向这个交换机发布消息时
指定路由key,就会将消息发送给指定的消息队列。

4.通配符模式:有这样一个案例,根据用户的设置,来决定用户接受短信、邮件、还是都接受,如果使用路由模式,那么一条消息根据路由key,只能匹配上短信或者邮件,不能两个都匹配,而使用通配符模式,就可以实现两者都匹配或者只匹配一个。
和路由模式一样,只是路由key设置的是带通配符的,这样就可以模糊匹配了。

5.Header模式:
header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配 队列。
案例:
根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种 通知类型都接收的则两种通知都有效。
6.RPC模式

浙公网安备 33010602011771号