成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

快速入門spring-amqp

鄒強(qiáng) / 1998人閱讀

摘要:它還為具有偵聽器容器的消息驅(qū)動的提供支持。接收消息當(dāng)存在基礎(chǔ)結(jié)構(gòu)時(shí),可以使用任何來注釋以創(chuàng)建偵聽器端點(diǎn)。默認(rèn)情況下,如果禁用重試并且偵聽器拋出異常,則會無限期地重試傳遞。

Spring-amqp-tutorial

Spring AMQP項(xiàng)目將核心Spring概念應(yīng)用于基于AMQP的消息傳遞解決方案的開發(fā)。它提供了一個(gè)“模板”作為發(fā)送和接收消息的高級抽象。它還為具有“偵聽器容器”的消息驅(qū)動的POJO提供支持。這些庫有助于管理AMQP資源,同時(shí)促進(jìn)依賴注入和聲明性配置的使用。在所有這些情況下,您將看到Spring Framework中與JMS支持的相似之處。

該項(xiàng)目由兩部分組成; spring-amqp是基礎(chǔ)抽象,spring-rabbit是RabbitMQ實(shí)現(xiàn)。

特征

用于異步處理入站消息的偵聽器容器

RabbitTemplate用于發(fā)送和接收消息

RabbitAdmin用于自動聲明隊(duì)列,交換和綁定

SpringBoot配置 AMQP

高級消息隊(duì)列協(xié)議(AMQP)是面向消息的中間件的平臺中立的線級協(xié)議。Spring AMQP項(xiàng)目將核心Spring概念應(yīng)用于基于AMQP的消息傳遞解決方案的開發(fā)。Spring Boot為通過RabbitMQ使用AMQP提供了一些便利,包括spring-boot-starter-amqp “Starter”。

RabbitMQ支持

RabbitMQ是一個(gè)基于AMQP協(xié)議的輕量級,可靠,可擴(kuò)展且可移植的消息代理。Spring用于RabbitMQ通過AMQP協(xié)議進(jìn)行通信。

RabbitMQ配置由外部配置屬性控制 spring.rabbitmq.*。例如,您可以在以下部分聲明以下部分 application.properties:

spring.rabbitmq.host = localhost
spring.rabbitmq.port = 5672
spring.rabbitmq.username = guest
spring.rabbitmq.password = guest

如果ConnectionNameStrategy上下文中存在bean,則它將自動用于命名由自動配置創(chuàng)建的連接ConnectionFactory。有關(guān)RabbitProperties更多支持的選項(xiàng),請參閱 。

發(fā)送消息

Spring的AmqpTemplate和AmqpAdmin被自動配置,您可以直接自動裝配它們變成自己的豆類,如下面的例子:

@Component
public class MyBean {

    private final AmqpAdmin amqpAdmin;
    private final AmqpTemplate amqpTemplate;

    @Autowired
    public MyBean(AmqpAdmin amqpAdmin,AmqpTemplate amqpTemplate){
        this.amqpAdmin = amqpAdmin;
        this.amqpTemplate = amqpTemplate;
    }

    //....
}

如有必要,任何org.springframework.amqp.core.Queue定義為bean的都會自動用于在RabbitMQ實(shí)例上聲明相應(yīng)的隊(duì)列。

要重試操作,可以啟用重試AmqpTemplate(例如,在代理連接丟失的情況下):

spring.rabbitmq.template.retry.enabled = true
spring.rabbitmq.template.retry.initial-interval = 2s

默認(rèn)情況下禁用重試。您還可以RetryTemplate 通過聲明RabbitRetryTemplateCustomizerbean來以編程方式自定義。

接收消息

當(dāng)存在Rabbit基礎(chǔ)結(jié)構(gòu)時(shí),可以使用任何bean來注釋 @RabbitListener以創(chuàng)建偵聽器端點(diǎn)。如果RabbitListenerContainerFactory 未定義,SimpleRabbitListenerContainerFactory則會自動配置默認(rèn)值,您可以使用該spring.rabbitmq.listener.type屬性切換到直接容器 。如果 定義了a MessageConverter或MessageRecovererbean,它將自動與默認(rèn)工廠關(guān)聯(lián)。

以下示例組件在someQueue隊(duì)列上創(chuàng)建偵聽器端點(diǎn):

@Component
public class MyBean {

    @RabbitListener(queues = "someQueue")
    public void processMessage(String content){
        //....
    }

}

如果您需要創(chuàng)建更多RabbitListenerContainerFactory實(shí)例,或者如果要覆蓋默認(rèn)實(shí)例,則Spring Boot提供了一個(gè) SimpleRabbitListenerContainerFactoryConfigurer和一個(gè) DirectRabbitListenerContainerFactoryConfigurer可用于初始化一個(gè) SimpleRabbitListenerContainerFactory和一個(gè) DirectRabbitListenerContainerFactory的設(shè)置,其設(shè)置與自動配置使用的工廠相同。

例如,以下配置類公開了另一個(gè)使用特定的工廠MessageConverter:

@Configuration
public class RabbitConfiguration {

    ConnectionFactory connectionFactory;

    @Bean
    public SimpleRabbitListenerContainerFactory myFactory(
            SimpleRabbitListenerContainerFactoryConfigurer configurer){
        SimpleRabbitListenerContainerFactory factory =
                new SimpleRabbitListenerContainerFactory();
        configurer.configure(factory,connectionFactory);
        factory.setMessageConverter(myMessageConverter());
        return factory;
    }

    private MessageConverter myMessageConverter() {
        //..
        return null;
    }

}

然后您可以在任何@RabbitListener注釋方法中使用工廠,如下所示:

@Component
public class MyBean {

    @RabbitListener(queues = "someQueue",concurrency = "myFactory")
    public void processMessage(String content){
        //..
    }

}

您可以啟用重試來處理偵聽器拋出異常的情況。默認(rèn)情況下,RejectAndDontRequeueRecoverer使用,但您可以定義MessageRecoverer 自己的。當(dāng)重試耗盡時(shí),如果代理配置了這樣做,則拒絕該消息并將其丟棄或路由到死信交換。默認(rèn)情況下,禁用重試。您還可以RetryTemplate通過聲明RabbitRetryTemplateCustomizerbean來以編程方式自定義。

默認(rèn)情況下,如果禁用重試并且偵聽器拋出異常,則會無限期地重試傳遞。您可以通過兩種方式修改此行為:將defaultRequeueRejected屬性設(shè)置 為false以便嘗試零重新傳遞,或拋出一個(gè)AmqpRejectAndDontRequeueException信號來拒絕該消息。后者是啟用重試并且達(dá)到最大傳遞嘗試次數(shù)時(shí)使用的機(jī)制。
快速開始

參考地址:

spring-amqp

spring-amqp-samples

下文教程Github地址

配置環(huán)境

    org.springframework.boot
    spring-boot-starter-amqp

鏈接參數(shù)

spring:
  rabbitmq:
    host: 192.168.192.132
    port: 5672
    username: guest
    password: guest
    template:
      retry:
        enabled: true # 代理鏈接丟失、啟用重試AmqpTemplate
        initial-interval: 2s # 代理鏈接丟失、啟用重試AmqpTemplate
amqpAdmin

amqpAdmin可以用于交換器,隊(duì)列以及綁定的申明,以下代碼演示了amqpAdmin的主要用法。

public class MyAdmin extends SampleApplicationTests {

    @Autowired
    AmqpAdmin amqpAdmin;

    @Test
    public void contextLoads(){
        //新建交換器
        amqpAdmin.declareExchange(new DirectExchange("myself.directExchange"));
        //新建隊(duì)列
        amqpAdmin.declareQueue(new Queue("myself.queue",true));
        //綁定
        amqpAdmin.declareBinding(new Binding("myself.queue",Binding.DestinationType.QUEUE,"myself.directExchange","",null));
    }

    @Test
    public void remove(){
        //移除交換器
        amqpAdmin.deleteExchange("myself.directExchange");
        //移除隊(duì)列
        amqpAdmin.deleteQueue("myself.queue");
    }
}

amqpTemplate

快速使用的發(fā)送接收模板

public class MyTemplate extends SampleApplicationTests {

    @Autowired
    AmqpTemplate amqpTemplate;

    @Test
    public void send(){
        amqpTemplate.convertAndSend("myself.queue","nihao");
    }

}

接收監(jiān)聽
@Service
public class MyService {

    @RabbitListener(queues = "myself.queue")
    public void recevie(String result){
        System.out.println("監(jiān)聽到消息了");
        System.out.println(result);
    }

}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/72273.html

相關(guān)文章

  • SpringBoot+RabbitMq實(shí)現(xiàn)延時(shí)消息隊(duì)列

    背景: 在一些應(yīng)用場景中,程序并不需要同步執(zhí)行,例如用戶注冊之后的郵件或者短信通知提醒。這種場景的實(shí)現(xiàn)則是在當(dāng)前線程,開啟一個(gè)新線 程,當(dāng)前線程在開啟新線程之后會繼續(xù)往下執(zhí)行,無需等待新線程執(zhí)行完成。 但例如一些需要延時(shí)的場景則不只是開啟新線程執(zhí)行如此簡單了。譬如提交訂單后在15分鐘內(nèi)沒有完成支付,訂單需要關(guān)閉,這種情 況,是否只開啟一個(gè)異步線程就不適用了呢。 那么就單單實(shí)現(xiàn)...

    alighters 評論0 收藏0
  • vue.js快速入門

    摘要:但是,今天我要寫一個(gè)快速入門,本人覺得還是有一點(diǎn)用處,因?yàn)?,我不可能在一天之?nèi)精通某種東西,卻可以在一兩小時(shí)入門。不知道還要不要再來一個(gè)快速入門,發(fā)展得挺快,東西也像類似的全家。 以前看到多少天學(xué)習(xí)系列,我都深感煩躁,短短幾天怎么可以精通,那是對于他們而言。但是,今天我要寫一個(gè)快速入門,本人覺得還是有一點(diǎn)用處,因?yàn)?,我不可能在一天之?nèi)精通某種東西,卻可以在一兩小時(shí)入門。 回到vue本身...

    MkkHou 評論0 收藏0
  • 云服務(wù)器ecs個(gè)人版快速入門概述

    摘要:云服務(wù)器實(shí)例,有時(shí)候也被稱為阿里云服務(wù)器云服務(wù)器云服務(wù)器等。為避免引起誤解,本文一律使用云服務(wù)器實(shí)例這一名稱,簡稱實(shí)例。快速入門流程 一般購買和使用云服務(wù)器 ECS實(shí)例遵循以下步驟:配置選型創(chuàng)建實(shí)例遠(yuǎn)程連接實(shí)例如果是 Linux 實(shí)例,格式化和掛載數(shù)據(jù)盤 ;如果是 Windows 實(shí)例,格式化數(shù)據(jù)盤 文檔目的 本文檔介紹了如何快速創(chuàng)建實(shí)例、遠(yuǎn)程連接實(shí)例、格式化數(shù)據(jù)盤等。旨在引導(dǎo)您一站式完成實(shí)...

    asce1885 評論0 收藏0
  • 一張腦圖看懂BUI Webapp移動快速開發(fā)框架【下】--快速入門指引

    摘要:例如改成例如改成以上兩種開發(fā)方式都可以結(jié)合原生平臺打包成獨(dú)立應(yīng)用。 繼上一篇一張腦圖看懂BUI Webapp移動快速開發(fā)框架【上】--框架與工具、資源 大綱 在線查看大綱 思路更佳清晰 1. 框架設(shè)計(jì) 框架介紹 簡介 BUI 是用來快速構(gòu)建界面交互的UI交互框架, 專注webapp開發(fā), 開發(fā)者只需關(guān)注業(yè)務(wù)的開發(fā), 界面的布局及交互交給BUI, 開發(fā)出來的應(yīng)用, 可以嵌入平臺 ( Li...

    hzx 評論0 收藏0
  • 云服務(wù)器ecs企業(yè)版快速入門概述

    摘要:快速入門流程企業(yè)級用戶在購買和使用云服務(wù)器實(shí)例時(shí),通常需考慮如下幾點(diǎn)配置選型估算成本網(wǎng)絡(luò)規(guī)劃配置安全組制定自動快照策略鏡像遷移用負(fù)載均衡實(shí)現(xiàn)的高可用性讀者對象本文檔作為快速入門參考,適用于有以下需求的讀者了解如何進(jìn)行云服務(wù)器實(shí)例的配置選型。快速入門流程企業(yè)級用戶在購買和使用云服務(wù)器ECS實(shí)例時(shí),通常需考慮如下幾點(diǎn): 配置選型估算成本網(wǎng)絡(luò)規(guī)劃配置安全組制定自動快照策略鏡像遷移用負(fù)載均衡實(shí)現(xiàn)EC...

    Clect 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<