前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >死信队列

死信队列

原创
作者头像
清风冷影
修改2019-07-16 17:57:30
4440
修改2019-07-16 17:57:30
举报
文章被收录于专栏:个人技术栈
代码语言:javascript
复制
/**
 * @Auther: Administrator
 * @Date: 2019年7月16日
 * @Description:   死信交换机  生产者首先发送一条携带路由键为 " dlx " 的消息,然后经过交换器
 * exchange .normal 顺利地存储到队列 queue.normal 中 。由于队列 queue.normal 设置了过期时间为
 * 10s , 在这 10s 内没有消费者消费这条消息,那么判定这条消息为过期。由于设置了 DLX , 过期
 * 之时 , 消息被丢给交换器 exchange.dlx 中,这时找到与 exchange.dlx 匹配的队列 queue.dlx,最
 * 后消息被存储在 queue.dlx 这个死信队列中。
 */
public class DLXProducer {


    public static void main(String[] args) throws IOException, TimeoutException {
        //创建连接
        Connection connection = ConnectionUtils.getConnection();
        //创建信道
        Channel channel = connection.createChannel();
        //定义普通的交换机
        channel.exchangeDeclare("exchange.normal", "fanout", true);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("x-message-ttl", 10000);
        //绑定死信交换交换机
        map.put("x-dead-letter-exchange", "exchange.dlx");
        // 这里的routingKey需要和死信队列的routingKey匹配
        map.put("x-dead-letter-routing-key", "routingKey");
        //普通的队列并绑定
        channel.queueDeclare("queue.normal", true, false, false, map);
        channel.queueBind("queue.normal", "exchange.normal", "rk");
        //定义死信交换机
        channel.exchangeDeclare("exchange.dlx", "direct", true);
        //死信队列
        channel.queueDeclare("queue.dlx", true, false, false, null);
        channel.queueBind("queue.dlx", "exchange.dlx", "routingKey");
        channel.basicPublish("exchange.normal", "rk", MessageProperties.PERSISTENT_TEXT_PLAIN, "死信队列测试2".getBytes());
        System.out.println("消息发送成功");
        channel.close();
        connection.close();
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档