一 代码

package com.rabbitmq;import com.rabbitmq.client.*;
import com.rabbitmq.util.ConnectionUtils;
import java.io.IOException;
import java.util.concurrent.TimeoutException;/**
* 生产者Mandatory参数测试
*/
public class Mandatory {private static final String EXCHANGE_NAME = "exchange_demo";private static final String ROUTING_KEY = "routingkey_demo";private static final String QUEUE_NAME = "queue_demo";private static final String IP_ADDRESS = "127.0.0.1";private static final int PORT = 5672;//RabbitMQ(AMQP) 服务端默认端口号为 5672public static void main(String[] args) throws IOException,TimeoutException, InterruptedException {ConnectionFactory factory = new ConnectionFactory();factory.setHost(IP_ADDRESS);factory.setUsername("root");factory.setPassword("123456");Connection connection = factory.newConnection();Channel channel = connection.createChannel();// 创建一个 type="direct" 、持久化的、非自动删除的交换器channel.exchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);// 创建一个持久化、非排他的、非自动删除的队列channel.queueDeclare(QUEUE_NAME, true, false, false, null);// 将交换器与队列通过路由键绑定channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY);// 发送一条持久化的消息: hello world !String message = "Hello World !";// 消息发布// 第三个参数为mandatorychannel.basicPublish(EXCHANGE_NAME, "", true,MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes());// 消息返回监听器channel.addReturnListener(new ReturnListener() {// 处理返回public void handleReturn(int i, String s, String s1, String s2,AMQP.BasicProperties basicProperties,byte[] bytes) throws IOException {String msg = new String(bytes);System.out.println(String.format("Basic Return返回的结果: %s", msg));}});}
}

二 测试

控制台输出如下,消息被返回给生产者。

Basic Return返回的结果: Hello World !

三 说明

当basicPublish的mandatory参数设置为false时,如果消息没有被正确路由,消息会丢弃,不会返回给生产者。

四 流程说明

五 参考代码

https://github.com/cakin24/RabbitMQDemo/blob/master/src/main/java/com/rabbitmq/Mandatory.java

https://gitee.com/cakin24/RabbitMQDemo/tree/master/src/main/java/com/rabbitmq/msgdirection/mandatory

RabbitMQ的mandatory参数测试相关推荐

  1. Springboot集成rabbitMQ之mandatory和备份交换机

    Springboot集成rabbitMQ之mandatory和备份交换机 mandatory 之前编写的消息队列代码中,通过重写ConfirmCallback中的confirm方法实现了消息送达的确认 ...

  2. spring.rabbitmq.template.mandatory 和spring.rabbitmq.publisher-returns

    在SpringBoot的RabbitMQ配置中,有如下一项: spring.rabbitmq.template.mandatory = true 官方注释: Enable mandatory mess ...

  3. RabbitMQ之mandatory和immediate

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  4. 【RabbitMQ】8、RabbitMQ之mandatory和immediate

    1. 概述 mandatory和immediate是AMQP协议中basic.publish方法中的两个标识位,它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能.对于刚开始接触Rabbi ...

  5. (11)RabbitMQ的mandatory、immediate和ReturnListener

    上一节介绍了RabbitMQ的生产者确认机制,这节继续介绍RabbitMQ的生产者确认相关的高级特性:mandatory.immediate.ReturnListener. 概述 上节介绍了Rabbi ...

  6. RabbitMQ之mandatory和immediate介绍

    1.概述 mandatory和immediate是AMQP协议的中basic.publish方法中的两个标识位,他们都有当消息传递过程中不可到达目的时返回给生产者的功能. 2.mandatory 当m ...

  7. thingsboard-部件库开发 之 rpc-部件开发

    查看全文 http://www.taodudu.cc/news/show-4409683.html 相关文章: ReviewBoard安装配置 ChibiOS如何建立自己的板级(board)配置 范德 ...

  8. RabbitMQ配置之mandatory,publisher-returns相关

    在SpringBoot的RabbitMQ配置中,有如下一项: spring.rabbitmq.template.mandatory = true 官方注释: Enable mandatory mess ...

  9. RabbitMQ消息路由失败的处理方案(回调与备份交换机AE)

    我们知道,消息在RabbitMQ的整个生命周期是生产者投递消息到Exchange,Exchange根据路由键将消息路由到合适的Queue,Queue再将消息推(或消费者主动拉)给消费者. 在这个过程当 ...

最新文章

  1. 开源轻量级办公系统Sandbox介绍以及配套开发文档连载
  2. 达摩院2021年十大科技趋势出炉:量子计算、脑机接口、第三代半导体应用……...
  3. c语言中缀表达式求值_数据结构考研笔记之栈与队列(四)栈与队列应用括号匹配、中缀表达式转前缀后缀问题...
  4. jQuery的显示和隐藏
  5. sed 中如何替换换行符
  6. multiple context container - entry point for tile click
  7. 996!007!同是敲了2万行代码,为什么他却晋升了?
  8. python 大括号中括号小括号的区分
  9. Solr查询参数sort(排序)
  10. AppFuse项目笔记(1)
  11. 数理统计基本原理复习
  12. 见贤思齐,正式开启源码之旅
  13. paip.c#.net 多线程调用控件的问题
  14. 读后感 《大话数据结构》
  15. linux网络Netfilter与iptables技术
  16. 文件系统读写性能测试实战
  17. google提供的blog搜索网址
  18. “走进名企”之参观微软亚洲研究院
  19. Linux容器的安装链接
  20. 中英文情感分析模型汇总

热门文章

  1. 数据科学家的一天,是怎样度过的?
  2. 使用 PyTorch 检测眼部疾病
  3. teamviewer13绿色便携版
  4. linux 修改hosts
  5. docx-templates前端模板引擎生成word
  6. MIMICIV2.0版本Concepts自动生成
  7. IBM SPSS Modeler 14.1下载安装及注册详细教程
  8. Vue高级语法(一) | 自定义指令详解
  9. 有限差分法、一阶向前差分、一阶向后差分
  10. 如何确定Z检验的值(查正态分布表时要注意中间的数字都是面积,最左边一列和最上面一行都是Z值)...