当前位置:网站首页>RockerMQ消息发送模式
RockerMQ消息发送模式
2022-06-27 08:15:00 【咩哥无敌】
简介
RocketMQ有三种发送模式,分别是同步发送、异步发送、单向发送,不同的模式适用于不同的业务场景
maven依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.6.1</version>
</dependency>生产者代码
public static void main(String[] args) {
DefaultMQProducer defaultProducer = getDefaultProducer();
Producer producer = new Producer();
producer.Sync(defaultProducer);
producer.Async(defaultProducer);
producer.oneway(defaultProducer);
defaultProducer.shutdown();
}
public static DefaultMQProducer getDefaultProducer() {
try {
DefaultMQProducer producer = new DefaultMQProducer("producerGroup");
producer.setNamesrvAddr("localhost:9876");
producer.start();
return producer;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 同步发送
* @param producer
*/
public void Sync(DefaultMQProducer producer) {
try {
// 同步消息发送失败后,重新发送几次
producer.setRetryTimesWhenSendFailed(0);
Message msg = new Message("topic", "同步发送".getBytes());
SendResult res = producer.send(msg);
System.out.println("res" + res);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 异步发送
* @param producer
*/
public void Async(DefaultMQProducer producer) {
try {
// 异步消息发送失败后,重新发送几次
producer.setRetryTimesWhenSendAsyncFailed(0);
Message msg = new Message("topic", "异步消息".getBytes());
producer.send(msg, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("sendResult:" + sendResult);
}
@Override
public void onException(Throwable throwable) {
System.out.println("throwable:" + throwable);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 单向发送
* @param producer
*/
public void oneway(DefaultMQProducer producer) {
try {
Message msg = new Message("topic", "单向发送".getBytes());
producer.sendOneway(msg);
}catch (Exception e) {
e.printStackTrace();
}
}三种发送模式的区别
同步发送:消息发送到master broker后并同步到slave broker后,才会响应客户端,效率慢,但丢失数据的风险小
异步发送:消息发送到master broker后就响应客户端,无需等待成功同步到slave broker,效率高,风险也高。例如master broker处理完消息后,响应完客户端后,未同步到slave broker
单向发送:生产者只需要生产消息,无需broker返回结果,效率最快,风险也最高,适用于允许丢失消息的场景中
边栏推荐
- 期货反向跟单—交易员的培训问题
- [paper reading] internally semi supervised methods
- [batch dos-cmd command - summary and summary] - parameters%0,%1,%2,%[0-9],%0-9 in the batch command and batch command parameter position switching command shift, operator% usage in the DOS command
- How much do you know about the cause of amplifier distortion?
- 关联GIS:条条道路通UE5城
- Read datasets iteratively with xgboost
- 100%弄明白5种IO模型
- Recognize the ordering of O (nlogn)
- 关于放大器失真的原因你了解多少呢?
- 2022.06.26(LC_6101_判断矩阵是否是一个 X 矩阵)
猜你喜欢

Redis installation under Linux

参考 | Win11 开启热点之后电脑不能上网

Binary tree structure and heap structure foundation

Ue5 magic power - POI solution

Persistence mechanism of redis

参考 | 升级 Win11 移动热点开不了或者开了连不上

【批处理DOS-CMD命令-汇总和小结】-输出/显示命令——echo

【11. 二维差分】

No matter how good LCD and OLED display technologies are, they cannot replace this ancient display nixie tube

Code source AQS sous - jacent pour la programmation simultanée juc
随机推荐
淘宝虚拟产品开店教程之作图篇
Linux下Redis的安装
Lvgl GUI guide porting code to stm32
(原创)自定义Drawable
粗读DS-TransUNet: Dual Swin Transformer U-Net for Medical Image Segmentation
c#的初步认识
What are the specialties of database system engineers?
Online text digit recognition list summation tool
Redis的持久化机制
分析日志.log
L'introduction en bourse de Wild Wind Pharmaceutical a pris fin: Yu pinzeng, qui avait l'intention de lever 540 millions de RMB, a effectué un investissement P2P.
2022 love analysis · panoramic report of it operation and maintenance manufacturers
Index +sql exercise optimization
Blind survey shows that female code farmers are better than male code farmers
lvgl使用demo及说明2
Mysql事务中MVCC理解超简单
Ready to migrate to the cloud? Please accept this list of migration steps
DataV轮播表组件dv-scroll-board宽度问题
Refer to | the computer cannot access the Internet after the hotspot is turned on in win11
Reference | upgrade win11 mobile hotspot can not be opened or connected