欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring boot整合RabbitMQ(Direct模式)

 更新時間:2017年04月26日 09:43:49   作者:牛頭人  
springboot集成RabbitMQ非常簡單,如果只是簡單的使用配置非常少,springboot提供了spring-boot-starter-amqp項目對消息各種支持。下面通過本文給大家介紹下spring boot整合RabbitMQ(Direct模式),需要的朋友可以參考下

springboot集成RabbitMQ非常簡單,如果只是簡單的使用配置非常少,springboot提供了spring-boot-starter-amqp項目對消息各種支持。

1.新建一個Spring Boot工程,命名為:“rabbitmq-hello”。

在pom.xml中引入如下依賴內(nèi)容,其中spring-boot-starter-amqp用于支持RabbitMQ。

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-amqp</artifactId>
 </dependency> 

2.在application.properties中配置關(guān)于RabbitMQ的連接和用戶信息,用戶可以回到上面的安裝內(nèi)容,在管理頁面中創(chuàng)建用戶。

spring.application.name=rabbitmq-hello
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456

3.創(chuàng)建消息生產(chǎn)者Sender。通過注入AmqpTemplate接口的實例來實現(xiàn)消息的發(fā)送,AmqpTemplate接口定義了一套針對AMQP協(xié)議的基礎(chǔ)操作。

在Spring Boot中會根據(jù)配置來注入其具體實現(xiàn)。在該生產(chǎn)者,我們會產(chǎn)生一個字符串,并發(fā)送到名為hello的隊列中。

@Component
public class Sender {
 @Autowired
 private AmqpTemplate rabbitTemplate;
 public void send() {
  String context = "hello " + new Date();
  System.out.println("Sender : " + context);
  this.rabbitTemplate.convertAndSend("hello", context);
 }
}

4.創(chuàng)建消息消費者Receiver。

通過@RabbitListener注解定義該類對hello隊列的監(jiān)聽,并用@RabbitHandler注解來指定對消息的處理方法。所以,該消費者實現(xiàn)了對hello隊列的消費,消費操作為輸出消息的字符串內(nèi)容。

@Component
@RabbitListener(queues = "hello")
public class Receiver {
 @RabbitHandler
 public void process(String hello) {
  System.out.println("Receiver : " + hello);
 }
}

5.創(chuàng)建RabbitMQ的配置類RabbitConfig,用來配置隊列、交換器、路由等高級信息。這里我們以入門為主,先以最小化的配置來定義,以完成一個基本的生產(chǎn)和消費過程。

@Configuration
public class RabbitConfig {
 @Bean
 public Queue helloQueue() {
  return new Queue("hello");
 }
}

6.創(chuàng)建應(yīng)用主類:

@SpringBootApplication
public class HelloApplication {
 public static void main(String[] args) {
  SpringApplication.run(HelloApplication.class, args);
 }
}

7.創(chuàng)建單元測試類,用來調(diào)用消息生產(chǎn):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = HelloApplication.class)
public class HelloApplicationTests {
  @Autowired
  private Sender sender;
  @Test
  public void hello() throws Exception {
    sender.send();
  }
}

8.啟動應(yīng)用主類,從控制臺中,我們看到如下內(nèi)容,程序創(chuàng)建了一個訪問127.0.0.1:5672中admin的連接。

o.s.a.r.c.CachingConnectionFactory    : Created new connection: SimpleConnection@29836d32 [delegate=amqp://admin@127.0.0.1:5672/]

同時,我們通過RabbitMQ的控制面板,可以看到Connection和Channels中包含當(dāng)前連接的條目。

9.運行單元測試類,我們可以看到控制臺中輸出下面的內(nèi)容,消息被發(fā)送到了RabbitMQ Server的hello隊列中。

Sender : hello Sun Sep 25 11:06:11 CST 2016

10.切換到應(yīng)用主類的控制臺,我們可以看到類似如下輸出,消費者對hello隊列的監(jiān)聽程序執(zhí)行了,并輸出了接受到的消息信息。

Receiver : hello Sun Sep 25 11:06:11 CST 2016

通過上面的示例,我們在Spring Boot應(yīng)用中引入spring-boot-starter-amqp模塊,進行簡單配置就完成了對RabbitMQ的消息生產(chǎn)和消費的開發(fā)內(nèi)容。

需要注意的地方,Direct模式相當(dāng)于一對一模式,一個消息被發(fā)送者發(fā)送后,會被轉(zhuǎn)發(fā)到一個綁定的消息隊列中,然后被一個接收者接收!

實際上RabbitMQ還可以支持發(fā)送對象:當(dāng)然由于涉及到序列化和反序列化,該對象要實現(xiàn)Serilizable接口.HelloSender做出如下改寫:

public void send() {
  User user=new User();  //實現(xiàn)Serializable接口
  user.setUsername("hlhdidi");
  user.setPassword("123");
  template.convertAndSend("queue",user);
}
HelloReceiver做出如下改寫:
@RabbitListener(queues="queue")  //監(jiān)聽器監(jiān)聽指定的Queue
public void process1(User user) {  //用User作為參數(shù)
  System.out.println("Receive1:"+user);
}

以上所述是小編給大家介紹的spring boot整合RabbitMQ(Direct模式),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 基于jQuery獲取table數(shù)據(jù)發(fā)送到后端

    基于jQuery獲取table數(shù)據(jù)發(fā)送到后端

    這篇文章主要介紹了基于jQuery獲取table數(shù)據(jù)發(fā)送到后端,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot+SpringCache實現(xiàn)兩級緩存(Redis+Caffeine)

    SpringBoot+SpringCache實現(xiàn)兩級緩存(Redis+Caffeine)

    這篇文章主要介紹了SpringBoot+SpringCache實現(xiàn)兩級緩存(Redis+Caffeine),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于Spring?@Transactional事務(wù)傳播機制詳解

    關(guān)于Spring?@Transactional事務(wù)傳播機制詳解

    我們?nèi)粘9ぷ髦袠O少使用事務(wù)傳播級別,單純只是使用事務(wù)和rollbackfor拋出異常來解決事務(wù)問題,但其實我們很多時候使用的是不正確的,或者說會造成事務(wù)粒度過大,本文詳解一下事務(wù)傳播級別,也讓自己更好地處理事務(wù)問題,需要的朋友可以參考下
    2023-08-08
  • Mybatis使用連表查詢的操作代碼

    Mybatis使用連表查詢的操作代碼

    這篇文章主要介紹了Mybatis如何使用連表查詢,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Java修飾符 abstract,static,final 的區(qū)別詳解

    Java修飾符 abstract,static,final 的區(qū)別詳解

    以下是對Java修飾符abstract,static,final的區(qū)別進行了詳細(xì)的介紹,需要的朋友可以過來參考下
    2013-09-09
  • JavaWeb中的路徑問題解讀

    JavaWeb中的路徑問題解讀

    這篇文章主要介紹了JavaWeb中的路徑問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 阿里云主機上安裝jdk 某庫出現(xiàn)問題的解決方法

    阿里云主機上安裝jdk 某庫出現(xiàn)問題的解決方法

    今天安裝jdk到阿里云服務(wù)上,首先看下阿里云是32位還是64位的,如果是32位下載32位的包,如果是64位的下載64位的包,下面與大家分享下安裝過程中遇到問題的解決方法
    2013-06-06
  • IDEA類存在但找不到的解決辦法

    IDEA類存在但找不到的解決辦法

    本文主要介紹了IDEA類存在但找不到的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java日常練習(xí)題,每天進步一點點(44)

    Java日常練習(xí)題,每天進步一點點(44)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java 利用反射機制,獲取實體所有屬性和方法,并對屬性賦值

    java 利用反射機制,獲取實體所有屬性和方法,并對屬性賦值

    這篇文章主要介紹了 java 利用反射機制,獲取實體所有屬性和方法,并對屬性賦值的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論