最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot下RabbitMq實現(xiàn)定時任務

 更新時間:2019年11月03日 14:42:22   作者:正經(jīng)男大學生BRLF  
這篇文章主要為大家詳細介紹了SpringBoot下RabbitMq實現(xiàn)定時任務,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了SpringBoot下RabbitMq實現(xiàn)定時任務,供大家參考,具體內容如下

定時任務場景:訂單下單15分鐘未付款自動關閉

延遲任務實現(xiàn)原理圖如下:

根據(jù)上圖看出我們需要兩個隊列(一是死信隊列,消息在里面度過TLL時間,二是處理隊列,消息度過TLL時間后進入該隊列),兩個交換機和路由(一是用來將消息送入死信隊列,二是將消息從死信隊列送到處理隊列),但是交換機其實可以用同一個,也就是一個交換機搭配兩個路由的方式。

以下為代碼實現(xiàn)過程:

//首先rabbitAdmin的配置
 @Bean
 public RabbitAdmin rabbitAdmin(CachingConnectionFactory cachingConnectionFactory){
 RabbitAdmin rabbitAdmin = new RabbitAdmin(cachingConnectionFactory);
 rabbitAdmin.setIgnoreDeclarationExceptions(true);
 return rabbitAdmin;
 }

然后是隊列交換機以及綁定的聲明(Queue,Exchange,Binding)

@Autowired
 RabbitAdmin rabbitAdmin;

 /**
 * 創(chuàng)建延遲隊列,該隊列內容不會唄監(jiān)聽,TLL到期自動轉發(fā)
 * @param queueName
 * @param delayExchange
 */
 public void createDelayQueue(String queueName,String delayExchange,String delayRoutingKey){
 Map<String, Object> map = new HashMap<>();
 /**注意這兩個參數(shù)必須綁定**/
 map.put("x-dead-letter-exchange", delayExchange);
 map.put("x-dead-letter-routing-key", delayRoutingKey);
 rabbitAdmin.declareQueue(new Queue(queueName,true,false,false,map));
 }

 /**
 * 創(chuàng)建普通隊列
 * @param queueName
 */
 public void createQueue(String queueName){
 rabbitAdmin.declareQueue(new Queue(queueName,true,false,false,new HashMap<>()));
 }
 /**
 * 創(chuàng)建延遲隊列得交換機,就是一個普通得交換機
 * @param name
 */
 public void createExchange(String name){
 rabbitAdmin.declareExchange(new DirectExchange(name,true,false));
 }

 /**
 * 綁定隊列
 * @param queueName
 * @param delayExchange
 * @param routeKey
 */
 public void bindQueue(String queueName,String delayExchange,String routeKey){
 rabbitAdmin.declareBinding(new Binding(queueName,Binding.DestinationType.QUEUE,delayExchange,routeKey,new HashMap<>()));
 }

 /**
 * 發(fā)送消息
 * @param message
 * @param exchange
 * @param routeKey
 * @param tll 時間 單位毫秒
 */
 public void sendMessageWithTll(String message,String exchange,String routeKey,String tll){
 rabbitAdmin.getRabbitTemplate().convertAndSend(exchange, routeKey, message, new MessagePostProcessor() {
  @Override
  public Message postProcessMessage(Message message) throws AmqpException {
  message.getMessageProperties().setExpiration(tll);
  return message;
  }
 });
 }

 @Override
 public void sendMessage(String message, String exchange, String routeKey) {
 rabbitAdmin.getRabbitTemplate().convertAndSend(exchange, routeKey, message, new MessagePostProcessor() {
  @Override
  public Message postProcessMessage(Message message) throws AmqpException {
  return message;
  }
 });
 }

進行測試

/**
 * 監(jiān)聽消息
 * @param message
 * @return
 */
 @RabbitListener(queues = "consumerQueue")
 public void getMessage(String message){
 System.out.println("收到消息getMessage:"+message +",time="+MyUtil.FormatDate(new Date()));
 }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java中args參數(shù)數(shù)組的用法說明

    Java中args參數(shù)數(shù)組的用法說明

    這篇文章主要介紹了Java中args參數(shù)數(shù)組的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot動態(tài)Feign服務調用詳解

    SpringBoot動態(tài)Feign服務調用詳解

    Feign是Netflix公司開發(fā)的一個聲明式的REST調用客戶端; Ribbon負載均衡、 Hystrⅸ服務熔斷是我們Spring Cloud中進行微服務開發(fā)非常基礎的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似
    2022-12-12
  • Springboot 使用內置tomcat禁止不安全HTTP的方法

    Springboot 使用內置tomcat禁止不安全HTTP的方法

    這篇文章主要介紹了Springboot 使用內置tomcat禁止不安全HTTP的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot對Druid配置SQL監(jiān)控功能失效問題及解決方法

    SpringBoot對Druid配置SQL監(jiān)控功能失效問題及解決方法

    這篇文章主要介紹了SpringBoot對Druid配置SQL監(jiān)控功能失效問題的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 話說Spring Security權限管理(源碼詳解)

    話說Spring Security權限管理(源碼詳解)

    本篇文章主要介紹了話說Spring Security權限管理(源碼詳解) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • java中如何使用泛型方法比較大小

    java中如何使用泛型方法比較大小

    這篇文章主要介紹了java中如何使用泛型方法比較大小,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 淺析Java SPI 與 dubbo SPI

    淺析Java SPI 與 dubbo SPI

    在Java中SPI是被用來設計給服務提供商做插件使用的。本文重點給大家介紹Java SPI 與 dubbo SPI的相關知識及區(qū)別介紹,感興趣的朋友跟隨小編一起學習下吧
    2021-05-05
  • Java深入講解AWT實現(xiàn)事件處理流程

    Java深入講解AWT實現(xiàn)事件處理流程

    AWT的事件處理是一種委派式事件處理方式:普通組件(事件源)將整個事件處理委托給特定的對象(事件監(jiān)聽器);當該事件源發(fā)生指定的事件時,就通知所委托的事件監(jiān)聽器,由事件監(jiān)聽器來處理這個事件
    2022-04-04
  • maven install報錯中程序包xxx不存在的問題解決

    maven install報錯中程序包xxx不存在的問題解決

    本文主要介紹了maven install報錯中程序包xxx不存在的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Java?Selenide?簡介與用法

    Java?Selenide?簡介與用法

    Selenium?是目前用的最廣泛的Web?UI?自動化測試框架,本文給大家介紹下Java?Selenide使用,感興趣的朋友一起看看吧
    2022-01-01

最新評論

磐安县| 穆棱市| 司法| 滦南县| 漳平市| 出国| 泾阳县| 湟源县| 贵南县| 廊坊市| 肃北| 大冶市| 东兴市| 射阳县| 徐州市| 呼玛县| 长治市| 安仁县| 临泉县| 明水县| 年辖:市辖区| 任丘市| 祁门县| 德保县| 时尚| 万源市| 故城县| 高平市| 黄浦区| 通辽市| 潜山县| 永善县| 东丽区| 宜昌市| 高台县| 伊通| 齐齐哈尔市| 伊宁县| 沿河| 宣威市| 南岸区|