日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

rabbitmq java集群_RabbitMQ集群整合SpringBoot2.x

發布時間:2025/3/20 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rabbitmq java集群_RabbitMQ集群整合SpringBoot2.x 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RabbitMQ相信大家已經再熟悉不過了,作為業界四大主流消息中間件之一(Apache RocketMQ、Apache Kafka、Apache ActiveMQ、RabbitMQ),它具有非常好的性能和可靠性的集群模式,不僅僅在各大互聯網大廠中廣泛使用(比如同程藝龍、美團點評等),而且在互聯網金融行業也常常被作為首選!SpringBoot作為互聯網開發利器已經不需要我再過多介紹什么,接下來我們一起從零開始構建RabbitMQ、并且與SpringBoot2.x的整合吧!

1.安裝RabbitMQ集群十步走!(3.6.5版本、采用rpm安裝方式,我們要安裝3個節點的集群,192.168.11.71 192.168.11.72 192.168.11.73、以71節點為例:)第一步:下載所需依賴包

Rabbitmq基于erlang語言編寫,所以必須要有。

wget?www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm

socat包為秘鑰包,如果沒有會提示缺少此依賴。

wget?http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm

rabbitmq-server-3.6.5核心服務包。

wget?www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

第二步:安裝并配置

安裝命令:

rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm

rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm安裝成功后:修改配置

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app文件

修改:loopback_users?中的?<>,只保留guest第三步:3個節點同時進行前兩步驟操作:(71、72、73)

第四步:啟停單點服務與開啟管控臺

/etc/init.d/rabbitmq-server start? |? stop?? |? status?? |??? restart

分別啟動三個節點,然后執行命令啟動控制臺插件如下:rabbitmq-plugins enable? rabbitmq_management最后使用?guest/guest登錄成功即可!第五步:接下來進行集群構建:

71、72、73任意一個節點為Master(這里選擇71為Master)

也就是說我們需要把71的Cookie文件同步到72、73節點上去,先停止所有服務器:/etc/init.d/rabbitmq-server stop

然后進入制定目錄(/var/lib/rabbitmq/)并遠程copy 文件到72、73節點,如下操作:scp /var/lib/rabbitmq/.erlang.cookie到192.168.11.72和192.168.11.73中

第六步:組成集群

首先啟動三個節點:rabbitmq-server -detached

然后把72和73分別加入到71中,組成集群 [--ram]為節點以什么方式加入到集群中

ram為內存 存儲 默認不加為disk磁盤存儲,操作如下:

node72:rabbitmqctl stop_app

node72:rabbitmqctl join_cluster [--ram] rabbit@bhz71

node72:rabbitmqctl start_app

第七步:修改集群名稱:

rabbitmqctl set_cluster_name rabbitmq_cluster1

第八步:查看集群狀態:

rabbitmqctl cluster_status?,如下所示表示集群構建OK!

第九步:構建鏡像隊列,任意節點執行命令如下:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

第十步:查看管控臺發現集群已經構建成功!

2.RabbitMQ與SpringBoot2.x整合

生產者端:第一步:pom.xml配置如下<?xml ?version="1.0"?encoding="UTF-8"?>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.bfxy

rabbitmq-springboot-producer

0.0.1-SNAPSHOT

jar

rabbitmq-springboot-producer

rabbitmq-springboot-producer

org.springframework.boot

spring-boot-starter-parent

2.0.2.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-amqp

org.springframework.boot

spring-boot-maven-plugin

第二步:application.properties配置文件spring.rabbitmq.addresses=192.168.11.71:5672

spring.rabbitmq.username=guest

spring.rabbitmq.password=guest

spring.rabbitmq.virtual-host=/

spring.rabbitmq.connection-timeout=15000

spring.rabbitmq.publisher-confirms=true??#confirm模式

spring.rabbitmq.publisher-returns=true???#return機制

spring.rabbitmq.template.mandatory=true??#與return機制結合配置次屬性第三步:編寫RabbitSender生產端代碼package?com.bfxy.springboot.producer;

import?java.util.Map;

import?org.springframework.amqp.rabbit.core.RabbitTemplate;

import?org.springframework.amqp.rabbit.core.RabbitTemplate.ConfirmCallback;

import?org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback;

import?org.springframework.amqp.rabbit.support.CorrelationData;

import?org.springframework.beans.factory.annotation.Autowired;

import?org.springframework.messaging.Message;

import?org.springframework.messaging.MessageHeaders;

import?org.springframework.messaging.support.MessageBuilder;

import?org.springframework.stereotype.Component;

@Component

public?class?RabbitSender?{

//自動注入RabbitTemplate模板類

@Autowired

private?RabbitTemplate?rabbitTemplate;

//回調函數:?confirm確認

final?ConfirmCallback?confirmCallback?=?new?RabbitTemplate.ConfirmCallback()?{

@Override

public?void?confirm(CorrelationData?correlationData,?boolean?ack,?String?cause)?{

System.err.println("correlationData:?"?+?correlationData);

System.err.println("ack:?"?+?ack);

if(!ack){

System.err.println("異常處理....");

}

}

};

//回調函數:?return返回

final?ReturnCallback?returnCallback?=?new?RabbitTemplate.ReturnCallback()?{

@Override

public?void?returnedMessage(org.springframework.amqp.core.Message?message,?int?replyCode,?String?replyText,

String?exchange,?String?routingKey)?{

System.err.println("return?exchange:?"?+?exchange?+?",?routingKey:?"

+?routingKey?+?",?replyCode:?"?+?replyCode?+?",?replyText:?"?+?replyText);

}

};

//發送消息方法調用:?構建Message消息

public?void?send(Object?message,?Map?properties)?throws?Exception?{

MessageHeaders?mhs?=?new?MessageHeaders(properties);

Message?msg?=?MessageBuilder.createMessage(message,?mhs);

rabbitTemplate.setConfirmCallback(confirmCallback);

rabbitTemplate.setReturnCallback(returnCallback);

//id?+?時間戳?全局唯一

CorrelationData?correlationData?=?new?CorrelationData("1234567890");

rabbitTemplate.convertAndSend("exchange-1",?"springboot.abc",?msg,?correlationData);

}

}

消費者:第一步:pom文件同生產者一致

第二步:application.properties配置文件spring.rabbitmq.addresses=192.168.11.76:5672

spring.rabbitmq.username=guest

spring.rabbitmq.password=guest

spring.rabbitmq.virtual-host=/

spring.rabbitmq.connection-timeout=15000

spring.rabbitmq.listener.simple.acknowledge-mode=manual?#手工簽收

spring.rabbitmq.listener.simple.concurrency=5

spring.rabbitmq.listener.simple.max-concurrency=10第三步:RabbitRecever消費端代碼package?com.bfxy.springboot.conusmer;

import?org.springframework.amqp.rabbit.annotation.Exchange;

import?org.springframework.amqp.rabbit.annotation.Queue;

import?org.springframework.amqp.rabbit.annotation.QueueBinding;

import?org.springframework.amqp.rabbit.annotation.RabbitHandler;

import?org.springframework.amqp.rabbit.annotation.RabbitListener;

import?org.springframework.amqp.support.AmqpHeaders;

import?org.springframework.messaging.Message;

import?org.springframework.stereotype.Component;

import?com.rabbitmq.client.Channel;

@Component

public?class?RabbitReceiver?{

@RabbitListener(bindings?=?@QueueBinding(

value?=?@Queue(value?=?"queue-1",

durable="true"),

exchange?=?@Exchange(value?=?"exchange-1",

durable="true",

type=?"topic",

ignoreDeclarationExceptions?=?"true"),

key?=?"springboot.*"

)

)

@RabbitHandler

public?void?onMessage(Message?message,?Channel?channel)?throws?Exception?{

System.err.println("--------------------------------------");

System.err.println("消費端Payload:?"?+?message.getPayload());

Long?deliveryTag?=?(Long)message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);

//手工ACK

channel.basicAck(deliveryTag,?false);

}

}

生產端測試:package?com.bfxy.springboot;

import?java.text.SimpleDateFormat;

import?java.util.Date;

import?java.util.HashMap;

import?java.util.Map;

import?org.junit.Test;

import?org.junit.runner.RunWith;

import?org.springframework.beans.factory.annotation.Autowired;

import?org.springframework.boot.test.context.SpringBootTest;

import?org.springframework.test.context.junit4.SpringRunner;

import?com.bfxy.springboot.producer.RabbitSender;

@RunWith(SpringRunner.class)

@SpringBootTest

public?class?ApplicationTests?{

@Test

public?void?contextLoads()?{

}

@Autowired

private?RabbitSender?rabbitSender;

private?static?SimpleDateFormat?simpleDateFormat?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss.SSS");

@Test

public?void?testSender1()?throws?Exception?{

Map?properties?=?new?HashMap<>();

properties.put("number",?"12345");

properties.put("send_time",?simpleDateFormat.format(new?Date()));

rabbitSender.send("Hello?RabbitMQ?For?Spring?Boot!",?properties);

}

}

總結

以上是生活随笔為你收集整理的rabbitmq java集群_RabbitMQ集群整合SpringBoot2.x的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩一区高清 | 国产精品扒开腿做爽爽爽视频 | 女性向片在线观看 | 日本一区二区高清免费 | 99久久久无码国产精品免费蜜柚 | 成人少妇影院yyyy | 欧美日韩国产一区二区三区 | 久久艹伊人 | 好吊妞无缓冲视频观看 | 人妻夜夜爽天天爽三区麻豆av网站 | 久久久国产精品久久久 | 秋霞国产 | 麻豆91av| 午夜激情网址 | 麻豆小视频 | 尤物网站在线 | 亚洲成人av网址 | 97在线免费观看视频 | 欧美成人aaa| 91av中文字幕| 久久国产欧美日韩精品 | 午夜精品久久久久久久第一页按摩 | 久草精品在线观看视频 | 欧美美女一区二区 | 日韩精品卡通动漫网站 | 亚洲欧美日韩激情 | 成人国产网站 | 色婷婷狠狠18禁久久 | 中文字幕xxxx | 亚日韩欧美 | 色在线视频 | 中国美女一级看片 | 国产成人自拍网站 | 欧美操穴| 日韩黄色一级视频 | 欧美美女爱爱视频 | 亚洲精品成人无码熟妇在线 | 免费的黄色一级片 | 午夜在线观看一区 | 成人福利影院 | www.youjizz.com在线 | 亚洲国产精品尤物yw在线观看 | 黄色三级在线观看 | 伊人久久网站 | 国产综合激情 | 岛国av网址 | 鲁一鲁色一色 | 欧美久久一区二区三区 | 国产一区二区视频在线 | 麻豆一区二区三区在线观看 | 中文字幕三级 | 久久久久久片 | 日本护士取精xxxxxhd | 古代玷污糟蹋np高辣h文 | 香蕉久久精品日日躁夜夜躁 | 黄色三级av | 91综合在线| 亚洲熟妇无码一区二区三区 | 另类二区 | 肉肉av福利一精品导航 | 欧美成人aaaaⅴ片在线看 | 男女黄床上色视频免费的软件 | 免费国产a | 天天看天天摸天天操 | 精品欧美国产 | 久久精品一二三 | 亚洲激情电影在线 | 免费在线观看视频a | 污污小说在线观看 | 午夜免费视频观看 | 日韩欧美高清 | 成人精品三级av在线看 | 亚洲欧美自偷自拍 | 亚洲欧美在线成人 | 欧美激情福利 | 久久精品无码一区二区三区毛片 | 日韩精品2区 | 嫩草影院污 | 中文国产字幕 | 亚洲区色| 91亚洲精选| 中文字幕一级二级三级 | 欧美久久天堂 | 欧美性大战久久久久久 | 日本美女久久 | 日韩国产在线播放 | 在线播放91 | 中文字幕福利视频 | 国产日韩欧美视频在线观看 | 五月天精品在线 | 国产又大又黄又爽 | 国产精品国产精品国产专区不片 | 91网页入口 | 怡红院av亚洲一区二区三区h | 欧美日韩 一区二区三区 | 久久久久久久一 | 成年网站免费观看 | 日本在线视频二区 | 老熟妇高潮一区二区三区 |