https://www.cnblogs.com/mowen120/p/11905211.html
一、发送消息到队列(生产者)
新建一个maven项目,在pom.xml文件加入以下依赖
01 02 03 04 05 06 07 |
|
01 |
新建一个P1类
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|
运行后再浏览器进入RabbitMQ的控制台,切换到queue看到
二、获取队列消息(消费者)
新建一个C1类
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
运行后输出为
消费者一般都不会关闭,会一直等待队列消息,可以手动关闭程序。
channel.basicConsume(queueName,true,consumer);中的true为收到消息后自动确认,改为false取消自动确认。
在handleDelivery方法最后面用
// 手动确认 // 确认收到消息
01 |
|
来收到手动确认消息。消费者可以有多个并且可以同时消费一个队列;
当有多个消费者同时消费同一个队列时,收到的消息是平均分配的(消费者没收到之前已经确认每个消费者受到的消息),
但当其中一个消费者性能差的话,会影响其他的消费者,因为还要等它收完消息,这样会拖累其他消费者。
可以设置channel 的basicQos方法
01 02 03 |
|
三、扇形(fanout)交换机
扇形交换机是基本的交换机类型,会把收到的消息以广播的形式发送到绑定的队列里,因为不需要经过条件筛选,所以它的速度最快。
在生产者项目新建一个fanout类
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
运行后在RabbitMQ网页管理后台的queue会看到
切换到Exchanges会看到一个
就是我们声明的交换机,点击会看到我们绑定的队列
四、直连(direct)交换机
直连交换机会带路由功能,队列通过routing_key与直连交换机绑定,发送消息需要指定routing_key,交换机收到消息时,交换机会根据routing_key发送到指定队列里,同样的routing_key可以支持多个队列。
在生产者项目新建direct类
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
|
运行后到后台的queue会看到
切换到Exchanges会看到
点击进去
五、主题(topic)交换机
主题交换机的routing_key可以有一定的规则,交换机和队列的routing_key需要采用*.#.*…..的格式
每个部分用.分开
*代表一个单词(不是字符)
#代表任意数量(0或n个)单词
在生产者项目新进topic类
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
|
运行后,到后台queue会看到
切换到Exchanges会看到
点击进入会看到