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

springboot2.0集成rabbitmq的示例代碼

 更新時(shí)間:2018年12月02日 16:31:13   作者:flyingkid  
這篇文章主要介紹了springboot2.0集成rabbitmq的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

安裝rabbitmq

簡(jiǎn)介: rabbitmq即一個(gè)消息隊(duì)列,主要用來實(shí)現(xiàn)應(yīng)用程序的異步和解耦,消息緩沖,消息分發(fā)的作用.

由于rabbitmq依賴于erlang語言,所以先安裝erlang:

添加erlang solutions源

$ wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
$ sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
$ sudo yum install erlang

erlang完成后安裝rabbitmq:

先下載rpm:

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

下載完成后安裝:

yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

安裝時(shí)如果遇到下面的依賴錯(cuò)誤

Error: Package: socat-1.7.2.3-1.el6.x86_64 (epel)
 
Requires: libreadline.so.5()(64bit)

可以嘗試先執(zhí)行

$ sudo yum install socat

rabbitmq的基本操作:

$ sudo chkconfig rabbitmq-server on # 添加開機(jī)啟動(dòng)RabbitMQ服務(wù)
 
$ sudo /sbin/service rabbitmq-server start # 啟動(dòng)服務(wù)
 
$ sudo /sbin/service rabbitmq-server status # 查看服務(wù)狀態(tài)
 
$ sudo /sbin/service rabbitmq-server stop # 停止服務(wù)
 
#查看當(dāng)前所有用戶
 
$ sudo rabbitmqctl list_users
 
#查看默認(rèn)guest用戶的權(quán)限
 
$ sudo rabbitmqctl list_user_permissions guest
 

#由于RabbitMQ默認(rèn)的賬號(hào)用戶名和密碼都是guest。為了安全起見, 先刪掉默認(rèn)用戶
 
$ sudo rabbitmqctl delete_user guest
 
 
 
#添加新用戶
 
$ sudo rabbitmqctl add_user username password
 
#設(shè)置用戶tag
 
$ sudo rabbitmqctl set_user_tags username administrator
 
#賦予用戶默認(rèn)vhost的全部操作權(quán)限
 
$ sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

#查看用戶的權(quán)限
 
$ sudo rabbitmqctl list_user_permissions username

開啟遠(yuǎn)程訪問

默認(rèn)情況下,RabbitMQ的默認(rèn)的guest用戶只允許本機(jī)訪問, 如果想讓guest用戶能夠遠(yuǎn)程訪問的話,只需要將配置文件中的loopback_users列表置為空即可,如下:

{loopback_users, []}

另外關(guān)于新添加的用戶,直接就可以從遠(yuǎn)程訪問的,如果想讓新添加的用戶只能本地訪問,可以將用戶名添加到上面的列表, 如只允許admin用戶本機(jī)訪問。

{loopback_users, ["admin"]}

更新配置后,重啟服務(wù).

###springboot2.0集成rabbitmq

pom引入start依賴:

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

application.properties配置:

#rabbitmq config begin
# rabbitmq服務(wù)器地址 (默認(rèn)為127.0.0.1)
spring.rabbitmq.host=127.0.0.1
# rabbitmq服務(wù)器連接端口 (默認(rèn)為5672)
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#rabbitmq config end

rabbitmq javabean配置:

package com.snow.config;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * @Description: RabbitConfig
 * @Author: 愛飄de小子
 * @CreateDate: 2018/8/15 19:59
 * @Version: 1.0
 */
@Configuration
public class RabbitConfig {
 
  /**
   * 消費(fèi)者數(shù)量,默認(rèn)10
   */
  public static final int DEFAULT_CONCURRENT = 10;
 
  /**
   * 每個(gè)消費(fèi)者獲取最大投遞數(shù)量 默認(rèn)50
   */
  public static final int DEFAULT_PREFETCH_COUNT = 50;
 
 
  /**
   * 注入 Queue
   * @return
   */
  @Bean
  public Queue Queue() {
    return new Queue("hello");
  }
 
 
  /**
   * 并發(fā)消費(fèi)配置
   * @param configurer
   * @param connectionFactory
   * @return
   */
  @Bean("pointTaskContainerFactory")
  public SimpleRabbitListenerContainerFactory pointTaskContainerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) {
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setPrefetchCount(DEFAULT_PREFETCH_COUNT);
    factory.setConcurrentConsumers(DEFAULT_CONCURRENT);
    configurer.configure(factory, connectionFactory);
    return factory;
  } 
}

發(fā)送消息:

/**
 * 注入AmqpTemplate
 */
@Autowired
private AmqpTemplate rabbitTemplate;

 

public void sendMessage(){
  //發(fā)送消息
  this.rabbitTemplate.convertAndSend("hello","你好,rabbitmq");
}

convertAndSend方法的第一個(gè)參數(shù)為QueueName,第二個(gè)參數(shù)為消息的內(nèi)容

接收消息:

/**
   * 消息接受
   * @param message
   */
  @RabbitListener(queues = "hello") //監(jiān)聽器監(jiān)聽指定的QueueName
  public void receive(String message) {
    System.out.println("接收消息:" + message);
  }

并發(fā)消費(fèi):

sendMessage() 發(fā)送消息后,receive() 接受消息,此時(shí)receive()接受消息,等待處理完成后,下一個(gè)消息才能進(jìn)入receive(),如果想要消息異步消費(fèi),還需配置并發(fā)消費(fèi):

/**
   * 消息接受 并發(fā)消費(fèi)
   * @param message
   */
  @RabbitListener(queues = "hello",containerFactory = "pointTaskContainerFactory")
  public void receive(String message) {
    System.out.println("接收消息:" + message);
  }

@RabbitListener注解中的containerFactory 是RabbitConfig配置的pointTaskContainerFactory,可以自定義如下參數(shù):

/**
   * 消費(fèi)者數(shù)量,默認(rèn)10
   */
  public static final int DEFAULT_CONCURRENT = 10;
 
  /**
   * 每個(gè)消費(fèi)者獲取最大投遞數(shù)量 默認(rèn)50
   */
  public static final int DEFAULT_PREFETCH_COUNT = 50;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java Bigdecimal使用原理詳解

    Java Bigdecimal使用原理詳解

    這篇文章主要介紹了Java Bigdecimal使用原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 基于SpringBoot和Vue的動(dòng)態(tài)語音播放實(shí)現(xiàn)

    基于SpringBoot和Vue的動(dòng)態(tài)語音播放實(shí)現(xiàn)

    本文介紹如何使用SpringBoot和Vue實(shí)現(xiàn)音頻文件的動(dòng)態(tài)播放,包括前端頁面設(shè)計(jì)、后端接口開發(fā)、音頻文件存儲(chǔ)和調(diào)用等方面。通過該實(shí)現(xiàn),用戶可以在網(wǎng)頁上直接播放音頻,增強(qiáng)用戶體驗(yàn),提高網(wǎng)站互動(dòng)性
    2023-04-04
  • Spring中@Autowired注解的原理詳解

    Spring中@Autowired注解的原理詳解

    這篇文章主要介紹了Spring中@Autowired注解的原理詳解,對(duì)于spring配置一個(gè)bean時(shí),如果需要給該bean提供一些初始化參數(shù),則需要通過依賴注入方式,所謂的依賴注入就是通過spring將bean所需要的一些參數(shù)傳遞到bean實(shí)例對(duì)象的過程,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)簡(jiǎn)易購(gòu)物系統(tǒng)

    Java實(shí)現(xiàn)簡(jiǎn)易購(gòu)物系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易購(gòu)物系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • spring?boot權(quán)限管理的幾種常見方式

    spring?boot權(quán)限管理的幾種常見方式

    這篇文章主要給大家介紹了關(guān)于spring?boot權(quán)限管理的幾種常見方式,在Web應(yīng)用程序中,用戶權(quán)限管理是至關(guān)重要的,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 詳解Spring MVC的攔截器與異常處理機(jī)制

    詳解Spring MVC的攔截器與異常處理機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Spring MVC的攔截器與異常處理機(jī)制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java之@TableField注解的用法解析

    Java之@TableField注解的用法解析

    MyBatis-Plus的@TableField注解用于控制實(shí)體類字段與數(shù)據(jù)庫表字段的映射關(guān)系,支持字段映射、忽略、插入和更新控制、自定義填充策略和類型轉(zhuǎn)換等
    2025-01-01
  • 簡(jiǎn)單介紹一下什么是microservice微服務(wù)

    簡(jiǎn)單介紹一下什么是microservice微服務(wù)

    這篇文章主要介紹了一下什么是microservice微服務(wù)微服務(wù)的定義,微服務(wù)到底是什么意思?什么樣的架構(gòu)可以叫做微服務(wù)?這篇文章可以給你答案
    2023-03-03
  • java 判斷字符串中是否有重復(fù)字符的示例

    java 判斷字符串中是否有重復(fù)字符的示例

    今天小編就為大家分享一篇java 判斷字符串中是否有重復(fù)字符的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java 處理圖片與base64 編碼的相互轉(zhuǎn)換的示例

    Java 處理圖片與base64 編碼的相互轉(zhuǎn)換的示例

    本篇文章主要介紹了Java 處理圖片與base64 編碼的相互轉(zhuǎn)換的示例,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08

最新評(píng)論

五家渠市| 龙井市| 平南县| 广德县| 文登市| 镇远县| 名山县| 东乡县| 湘潭县| 内江市| 湛江市| 荆门市| 松潘县| 乌拉特前旗| 广德县| 普安县| 巴林右旗| 东光县| 正安县| 永春县| 新宾| 平顶山市| 金沙县| 垣曲县| 宝丰县| 分宜县| 会泽县| 乾安县| 南川市| 苗栗县| 桂阳县| 大兴区| 滨海县| 余干县| 福州市| 武穴市| 永川市| 齐河县| 黄大仙区| 莎车县| 和静县|