激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot2.0集成rabbitmq的示例代碼

springboot2.0集成rabbitmq的示例代碼

2021-06-18 14:09flyingkid Java教程

這篇文章主要介紹了springboot2.0集成rabbitmq的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

安裝rabbitmq

簡介: rabbitmq即一個消息隊列,主要用來實現應用程序的異步和解耦,消息緩沖,消息分發的作用.

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

添加erlang solutions源

?
1
2
3
$ 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:

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

下載完成后安裝:

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

安裝時如果遇到下面的依賴錯誤

error: package: socat-1.7.2.3-1.el6.x86_64 (epel)
 
requires: libreadline.so.5()(64bit)

可以嘗試先執行

?
1
$ sudo yum install socat

rabbitmq的基本操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ sudo chkconfig rabbitmq-server on # 添加開機啟動rabbitmq服務
 
$ sudo /sbin/service rabbitmq-server start # 啟動服務
 
$ sudo /sbin/service rabbitmq-server status # 查看服務狀態
 
$ sudo /sbin/service rabbitmq-server stop # 停止服務
 
#查看當前所有用戶
 
$ sudo rabbitmqctl list_users
 
#查看默認guest用戶的權限
 
$ sudo rabbitmqctl list_user_permissions guest
 
 
#由于rabbitmq默認的賬號用戶名和密碼都是guest。為了安全起見, 先刪掉默認用戶
 
$ sudo rabbitmqctl delete_user guest
 
 
 
#添加新用戶
 
$ sudo rabbitmqctl add_user username password
 
#設置用戶tag
 
$ sudo rabbitmqctl set_user_tags username administrator
 
#賦予用戶默認vhost的全部操作權限
 
$ sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
 
#查看用戶的權限
 
$ sudo rabbitmqctl list_user_permissions username

開啟遠程訪問

默認情況下,rabbitmq的默認的guest用戶只允許本機訪問, 如果想讓guest用戶能夠遠程訪問的話,只需要將配置文件中的loopback_users列表置為空即可,如下:

?
1
{loopback_users, []}

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

?
1
{loopback_users, ["admin"]}

更新配置后,重啟服務.

###springboot2.0集成rabbitmq

pom引入start依賴:

?
1
2
3
4
<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-amqp</artifactid>
</dependency>

application.properties配置:

?
1
2
3
4
5
6
7
8
#rabbitmq config begin
# rabbitmq服務器地址 (默認為127.0.0.1
spring.rabbitmq.host=127.0.0.1
# rabbitmq服務器連接端口 (默認為5672
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
#rabbitmq config end

rabbitmq javabean配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 {
 
  /**
   * 消費者數量,默認10
   */
  public static final int default_concurrent = 10;
 
  /**
   * 每個消費者獲取最大投遞數量 默認50
   */
  public static final int default_prefetch_count = 50;
 
 
  /**
   * 注入 queue
   * @return
   */
  @bean
  public queue queue() {
    return new queue("hello");
  }
 
 
  /**
   * 并發消費配置
   * @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;
  }
}

發送消息:

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 注入amqptemplate
 */
@autowired
private amqptemplate rabbittemplate;
 
 
 
public void sendmessage(){
  //發送消息
  this.rabbittemplate.convertandsend("hello","你好,rabbitmq");
}

convertandsend方法的第一個參數為queuename,第二個參數為消息的內容

接收消息:

?
1
2
3
4
5
6
7
8
/**
   * 消息接受
   * @param message
   */
  @rabbitlistener(queues = "hello") //監聽器監聽指定的queuename
  public void receive(string message) {
    system.out.println("接收消息:" + message);
  }

并發消費:

sendmessage() 發送消息后,receive() 接受消息,此時receive()接受消息,等待處理完成后,下一個消息才能進入receive(),如果想要消息異步消費,還需配置并發消費:

?
1
2
3
4
5
6
7
8
/**
   * 消息接受 并發消費
   * @param message
   */
  @rabbitlistener(queues = "hello",containerfactory = "pointtaskcontainerfactory")
  public void receive(string message) {
    system.out.println("接收消息:" + message);
  }

@rabbitlistener注解中的containerfactory 是rabbitconfig配置的pointtaskcontainerfactory,可以自定義如下參數:

?
1
2
3
4
5
6
7
8
9
/**
   * 消費者數量,默認10
   */
  public static final int default_concurrent = 10;
 
  /**
   * 每個消費者獲取最大投遞數量 默認50
   */
  public static final int default_prefetch_count = 50;

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

原文鏈接:https://juejin.im/post/5c0273b06fb9a049f06a0021

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 轻点插视频 | 久久精品色 | 久久久久久久久久久久99 | 日本一区视频在线播放 | 毛片一区二区三区四区 | 久久久久亚洲国产精品 | 久久精品一二三区 | 欧美 日韩 国产 在线 | 精品成人av一区二区三区 | 国产一区精品在线观看 | 一级免费黄色免费片 | 色污视频 | 久久久久久久网站 | 成人在线97| 午夜视频亚洲 | 亚洲无马在线观看 | 看免费一级毛片 | 99热久草 | 神马顶级推理片免费看 | 久久人人爽人人爽人人片av高清 | 欧美成人一区二区三区电影 | 中文字幕一二三区芒果 | 羞羞视频免费入口网站 | 在线成人亚洲 | 久久国产秒| 手机视频在线播放 | 久久国产秒 | 久久久久久久久久久久久国产精品 | 国产日产精品久久久久快鸭 | 孕妇体内谢精满日本电影 | 欧美三日本三级少妇三级99观看视频 | 亚洲一区免费观看 | 亚洲精品一区国产精品丝瓜 | 日日爱影院 | 性爱视频免费 | 毛片小网站 | 吾色视频 | 国产91片 | 久草在线资源福利站 | 最新中文在线视频 | 把娇妻调教成暴露狂 |