消息被拒MQ

简介: 消息被拒MQ

生产者


/**
 * 消息被拒的情况
 */
public class Produce0001 {
    private  static  final  String NORMAL_EXCHANGE="normal_exchange";
    public static void main(String[] args) throws  Exception{
        Channel channel = untils.getChannel();
        channel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);
        //该消息用作队列的个数限制
        for(int i=0;i<10;i++)
        {
            String message="info"+i;
            channel.basicPublish(NORMAL_EXCHANGE,"zhangsan",null,message.getBytes(StandardCharsets.UTF_8));
            System.out.println("生产者发送消息"+message);
        }
    }
}


消费者:


/**
 * 消息被拒的情况
 */
public class Consumer0001 {
        //普通交换机
        private  static  final  String NORMAL_EXCHANGE="normal_exchange";
        //死信交换机
        private  static  final  String DEAD_EXCHANGE="dead_exchange";
        public static void main(String[] args) throws  Exception{
            Channel channel = untils.getChannel();
            //声明死信交换机,类型为direct
            channel.exchangeDeclare(NORMAL_EXCHANGE, BuiltinExchangeType.DIRECT);
            channel.exchangeDeclare(DEAD_EXCHANGE,BuiltinExchangeType.DIRECT);
            //声明死信队列
            String deadQueue="dead_queue";
            channel.queueDeclare(deadQueue,false,false,false,null);
            //死信队列绑定交换和routingKey值
            channel.queueBind(deadQueue,DEAD_EXCHANGE,"lisi");
            //正常队列绑定死信队列
            Map<String,Object> params=new HashMap<>();
            //正常队列设置死信交换机,参数key是固定值
            params.put("x-dead-letter-exchange",DEAD_EXCHANGE);
            //正常队列设置死信routing-key,参数key是固定值
            params.put("x-dead-letter-routing-key", "lisi");
            //正常队列设置的最大限制长度
            params.put("x-max-length",6);
            System.out.println("等待接收消息....");
            String normalQueue="normal_queue";
            channel.queueDeclare(normalQueue,false,false,false,params);
            channel.queueBind(normalQueue,NORMAL_EXCHANGE,"zhangsan");
            DeliverCallback deliverCallback=(consumerTag, message) -> {
                String s = new String(message.getBody(), StandardCharsets.UTF_8);
                if (s.equals("info5"))
                {
                    System.out.println("info5拒接");
                    channel.basicReject(message.getEnvelope().getDeliveryTag(), false);
                }
                else
                {
                    System.out.println("01接收到消息"+s);
                    channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
                }
            };
            channel.basicConsume(normalQueue,false,deliverCallback,consumerTag -> {});
        }
}


结果:


2dab69ad4ab947f9bcea85d85da4d9cd.png

bb3f99a75625411293d8aa03e0edf330.png003d8e5dcb674dbe8a5232ecb23859be.png


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
JavaScript 前端开发
vue 部署项目,访问页面空白,找不到js或css文件 (net::ERR_ABORTED 404 (Not Found))
vue 部署项目,访问页面空白,找不到js或css文件 (net::ERR_ABORTED 404 (Not Found))
3467 0
vue 部署项目,访问页面空白,找不到js或css文件 (net::ERR_ABORTED 404 (Not Found))
|
自然语言处理 搜索推荐 机器人
云上数字客服:重塑客户服务体验的智能化转型
技术成熟度:目前云上数字客服技术仍在不断发展和完善中,技术成熟度有待提高。 数据安全与隐私保护:随着客户数据的不断增加,如何确保数据的安全性和隐私性成为亟待解决的问题。 人机交互体验:虽然智能客服机器人已经取得了很大进展,但在某些复杂场景下仍难以完全替代人工客服,需要不断优化人机交互体验。 五、未来展望 随着技术的不断进步和市场环境的不断变化,云上数字客服将迎来更加广阔的发展前景。未来,云上数字客服将更加注重技术的创新和应用场景的拓展,不断提升服务质量和效率;同时加强数据安全和隐私保护,确保客户信息的安全性;此外还将积极探索与其他智能系统的融合应用,如智能营销、智能供应链等,为企业提供更全面的
919 7
|
8月前
|
存储 JavaScript 前端开发
【Vue.js——关键字匹配】搜一搜呀(蓝桥杯真题-1762)【合集】
本文介绍了一个使用 Vue 2 实现关键字匹配搜索功能的项目。主要内容包括: - **准备**:项目已内置初始代码,目录结构包含 `css/style.css`、`images` 文件夹、`index.html` 和 `vue.min.js`。 - **目标**:完善 `index.html` 文件,使页面能够根据用户输入的关键字显示匹配的帖子列表。 - **规定**:需严格按照步骤操作,保持 Web 服务正常运行,并点击「提交检测」进行自动判分。 - **实现方式**: - 使用 Vue 的 `v-model` 指令绑定输入框和数据属性 `search`。 - 定义 `Post`
106 14
|
存储 数据采集 监控
【数据挖掘实战】——应用系统负载分析与容量预测(ARIMA模型)
项目地址:Datamining_project: 数据挖掘实战项目代码
1514 0
|
网络协议 Java 关系型数据库
Tomcat服务器的安装、启动与配置
3、Tomcat 3.1 安装tomcat tomcat官网:https://tomcat.apache.org/ 3.2、Tomcat启动: 文件夹作用: 启动,关闭Tomcat 访问测试:https://localhost:8080/ 可能遇到的问题: Java环境变量没有配置 闪退问题:需要配
|
8天前
|
人工智能 运维 安全
|
6天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
661 23