- 第一个参数:表示队列名称
- 第二个参数:表示是否持久化,为true表示会将队列持久化存储到硬盘
- 第三个参数:表示是否排它性,为true表示只对首次声明它的连接可见,会在其连接断开的时候自动删除
- 第四个参数:表示是否自动删除,为true表示有过消费者并且所有消费者都解除订阅了,自动删除队列
- 第五个参数:表示设置参数,参数类型为Map<String, Object>
//交换器和队列进行绑定(可重复执行,不会重复创建)channel.queueBind(queueName, exchangeName, routingKey);//异步进行绑定,最后一个参数表示可以带自定义参数channel.queueBindNoWait(queueName,exchangeName,routingKey,null);//exchange和queue进行解绑(可重复执行)channel.queueUnbind(queueName, exchangeName, routingKey);//exchange与exchange进行绑定(可重复执行,不会重复创建)//第一个参数表示目标交换器//第二个参数表示原地址交换器//第三个参数表绑定路由keychannel.exchangeBind(destination,source,routingKey);//exchange和exchange进行解绑(可重复执行)channel.exchangeUnbind(destination,source,routingKey);绑定关系参数解读:- queueName:队列名称,取自创建的队列名称
- exchangeName:交换器,取自创建的交换器名称
- routingKey:路由键key,自定义
//发送的消息内容byte[] messageBodyBytes = "Hello, world!".getBytes();channel.basicPublish(exchangeName, routingKey, null, messageBodyBytes);也可以在发送消息前设定一些消息属性 。//自己构建BasicProperties的对象channel.basicPublish(exchangeName, routingKey, new AMQP.BasicProperties.Builder() .contentType("text/plain") .deliveryMode(2) .priority(1) .userId("zhangsan") .build()), messageBodyBytes);发送指定头信息的消息 。Map<String, Object> headers = new HashMap<String, Object>();headers.put("userName", '"zhangsan');headers.put("userCode", "123");//发送消息到交换器channel.basicPublish(exchangeName, routingKey, new AMQP.BasicProperties.Builder() .headers(headers) .build()), messageBodyBytes);发送一个有过期时间的消息,单位:ms 。//设置消息过期时间,单位mschannel.basicPublish(exchangeName, routingKey, new AMQP.BasicProperties.Builder() .expiration("6000") .build()), messageBodyBytes);更多用法,可以参见官方 API5.7、接受消息从消息队列中接受消息也会使用我们上文所提到的channel管道 。
//监听队列中的消息channel.basicConsume(queueName,true,new SimpleConsumer(channel));监听队列消息参数解读:- 第一个参数:表示需要监听的队列名称
- 第二个参数:表示是否自动确认,如果配置false表示手动确认消息是否收到
- 第三个参数:表示消息处理类
public class SimpleConsumer extends DefaultConsumer{ public SimpleConsumer(Channel channel){ super(channel); } @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { //接受从队列中发送的消息 System.out.println(consumerTag); System.out.println("-----收到消息了---------------"); System.out.println("消息属性为:"+properties); System.out.println("消息内容为:"+new String(body)); }}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 深入理解 Linux 内核中的 RCU 机制
- 深入设计原则-SOLID
- 深入理解 HttpSecurity
- 什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?
- 资深架构师:深入聊聊获取屏幕高度这件事
- 从 Spring Boot 程序启动深入理解 Netty 异步架构原理
- docker安装rabbitmq延时队列插件
- 解密windows系统版本和版本号,深入了解一组简单数字背后的故事
- 详解版 深入浅出 HTTPS
- Linux主流架构运维工作简单剖析
