暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RabbitMQ笔记(五)-RabbitTemplate

生活不止眼前的代码 2019-01-17
229

网页浏览地址

https://blog.csdn.net/yingziisme/article/details/86418450

使用RabbitTemplate进行收发消息将十分的方便

首先配置bean

  1.     @Bean

  2.    public RabbitTemplate rabbitTemplate(CachingConnectionFactory factory){

  3.        log.info("caching factory: {}", factory.getChannelCacheSize());

  4.        RabbitTemplate rabbitTemplate = new RabbitTemplate(factory);

  5.        rabbitTemplate.setConfirmCallback(rabbitConfirmCallback);


  6.        /**

  7.         * 当mandatory标志位设置为true时

  8.         * 如果exchange根据自身类型和消息routingKey无法找到一个合适的queue存储消息

  9.         * 那么broker会调用basic.return方法将消息返还给生产者

  10.         * 当mandatory设置为false时,出现上述情况broker会直接将消息丢弃

  11.         */

  12.        rabbitTemplate.setMandatory(true);

  13.        rabbitTemplate.setReturnCallback(rabbitReturnCallback);

  14.        //使用单独的发送连接,避免生产者由于各种原因阻塞而导致消费者同样阻塞

  15.        rabbitTemplate.setUsePublisherConnection(true);


  16.        return rabbitTemplate;

  17.    }

ConfirmCallback: ConfirmCallback接口用于实现消息发送到RabbitMQ交换器后接收ack回调

ReturnCallback:ReturnCallback接口用于实现消息发送到RabbitMQ交换器,但无相应队列与交换器绑定时的回调

简单使用接口

给每一条信息添加一个dataId,放在CorrelationData,这样在RabbitConfirmCallback返回失败的时候可以知道是哪个消息失败

  1.    public void send(String dataId, String exchangeName, String rountingKey, String message){

  2.        CorrelationData correlationData = new CorrelationData();

  3.        correlationData.setId(dataId);


  4.        rabbitTemplate.convertAndSend(exchangeName, rountingKey, message, correlationData);

  5.    }


  6.    public String receive(String queueName){

  7.        return String.valueOf(rabbitTemplate.receiveAndConvert(queueName));

  8.    }

从2.1版本开始,CorrelationData对象具有ListenableFuture,可用于获取结果,而不是在rabbitTemplate上使用ConfirmCallback

  1. CorrelationData cd1 = new CorrelationData();

  2. this.templateWithConfirmsEnabled.convertAndSend("exchange", queue.getName(), "foo", cd1);

  3. assertTrue(cd1.getFuture().get(10, TimeUnit.SECONDS).isAck());


文章转载自生活不止眼前的代码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论