java rabbitmq 绑定_java操作RabbitMQ添加队列、消费队列和三个交换机

假设已经在服务器上安装完RabbitMQ。我写的教程

一、发送消息到队列(生产者)

新建一个maven项目,在pom.xml文件加入以下依赖

运行后再浏览器进入RabbitMQ的控制台,切换到queue看到

ef26dce6b0b5d9b8a3ca1081fad0fc37.png

二、获取队列消息(消费者)

新建一个C1类

运行后输出为

48352caa0fd5d5e81ff23946ff995cef.png消费者一般都不会关闭,会一直等待队列消息,可以手动关闭程序。

channel.basicConsume(queueName,true,consumer);中的true为收到消息后自动确认,改为false取消自动确认。

在handleDelivery方法最后面用// 手动确认

// 确认收到消息

来收到手动确认消息。消费者可以有多个并且可以同时消费一个队列;

当有多个消费者同时消费同一个队列时,收到的消息是平均分配的(消费者没收到之前已经确认每个消费者受到的消息),

但当其中一个消费者性能差的话,会影响其他的消费者,因为还要等它收完消息,这样会拖累其他消费者。

可以设置channel 的basicQos方法

三、扇形(fanout)交换机

扇形交换机是基本的交换机类型,会把收到的消息以广播的形式发送到绑定的队列里,因为不需要经过条件筛选,所以它的速度最快。

在生产者项目新建一个fanout类

运行后在RabbitMQ网页管理后台的queue会看到

1fe7591de33443af13ee78ce227fd2d0.png

切换到Exchanges会看到一个

a7dc39a314ed539df4b960936ea3e462.png

就是我们声明的交换机,点击会看到我们绑定的队列

5ff7c6ed9cdbebfdeb8db91b5f8541ff.png

四、直连(direct)交换机

直连交换机会带路由功能,队列通过routing_key与直连交换机绑定,发送消息需要指定routing_key,交换机收到消息时,交换机会根据routing_key发送到指定队列里,同样的routing_key可以支持多个队列。

在生产者项目新建direct类

运行后到后台的queue会看到

d63dfccc363de15be9d34a100e2ffa24.png

切换到Exchanges会看到

0b330546b970025471e4735ea2277d0d.png

点击进去

8427772e86ce402d81fe183aa8bb7354.png

五、主题(topic)交换机

主题交换机的routing_key可以有一定的规则,交换机和队列的routing_key需要采用*.#.*…..的格式

每个部分用.分开

*代表一个单词(不是字符)

#代表任意数量(0或n个)单词

在生产者项目新进topic类

运行后,到后台queue会看到

42e529bef79088dd42d369e179bd189d.png

切换到Exchanges会看到

407ad9aa6cb7a330c5b71bc246cdaebb.png

点击进入会看到

b9d432ed9d3c73b49295413f6268ebe0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值