使用 rocketmq5 是比较简单的事情。也有些同学对 sdk 原始接口会陌生,会希望有个集成的示例。

<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>${rocketmq5.version}</version>
</dependency>

完整的集成代码参考:

https://gitee.com/opensolon/solon-examples/tree/main/b.Integration/demoB002-rocketmq5

希望更加简化使用的同学,可以使用:

rocketmq5-solon-cloud-plugin (但定制性会变差)

1、看看配置怎么搞?

使用 Solon 初始器 生成一个 Solon Web 模板项目,然后添加上面的 rocketmq5 依赖。

  • 添加 yml 配置(具体的配置属性,参考:ClientConfigurationBuilder,ProducerBuilder, PushConsumerBuilder)
solon.app:
name: "demo-app"
group: "demo" solon.logging:
logger:
root:
level: INFO # 配置可以自由定义,与 @Bean 代码对应起来即可(以下为参考)
solon.rocketmq:
properties: #公共配置(配置项,参考:ClientConfigurationBuilder)
endpoints: "127.0.0.1:8081"
sessionCredentialsProvider:
"@type": "demoB002.SessionCredentialsProviderImpl" # solon 支持 "@type" 类型申明当前配置节的实例类型
accessKey: "xxx"
accessSecret: "xxx"
securityToken: "xxx"
requestTimeout: "10s"
producer: #生产者专属配置(配置项,参考:ProducerBuilder)
maxAttempts: 3
consumer: #消费者专属配置(配置项,参考:PushConsumerBuilder)
consumerGroup: "${solon.app.group}_${solon.app.name}"
consumptionThreadCount: 2
maxCacheMessageCount: 1
maxCacheMessageSizeInBytes: 1
  • 添加 java 配置器
@Configuration
public class RocketmqConfig {
private ClientServiceProvider clientProvider = ClientServiceProvider.loadService(); @Bean
public ClientConfiguration client(@Inject("${solon.rocketmq.properties}") Properties common){
ClientConfigurationBuilder builder = ClientConfiguration.newBuilder();
//注入属性
Utils.injectProperties(builder, common); return builder.build();
} @Bean
public Producer producer(@Inject("${solon.rocketmq.producer}") Properties producer,
ClientConfiguration clientConfiguration) throws ClientException {
ProducerBuilder producerBuilder = clientProvider.newProducerBuilder(); //注入属性
if (producer.size() > 0) {
Utils.injectProperties(producerBuilder, producer);
} producerBuilder.setClientConfiguration(clientConfiguration); return producerBuilder.build();
} @Bean
public PushConsumer consumer(@Inject("${solon.rocketmq.consumer}") Properties consumer,
ClientConfiguration clientConfiguration,
MessageListener messageListener) throws ClientException{ //按需选择 PushConsumerBuilder 或 SimpleConsumerBuilder
PushConsumerBuilder consumerBuilder = clientProvider.newPushConsumerBuilder(); //注入属性
Utils.injectProperties(consumerBuilder, consumer); Map<String, FilterExpression> subscriptionExpressions = new HashMap<>();
subscriptionExpressions.put("topic.test", new FilterExpression("*")); consumerBuilder.setSubscriptionExpressions(subscriptionExpressions);
consumerBuilder.setClientConfiguration(clientConfiguration);
consumerBuilder.setMessageListener(messageListener); return consumerBuilder.build();
}
} //这个实现类,(相对于 StaticSessionCredentialsProvider)方便配置自动注入
public class SessionCredentialsProviderImpl implements SessionCredentialsProvider {
private String accessKey;
private String accessSecret;
private String securityToken; private SessionCredentials sessionCredentials; @Override
public SessionCredentials getSessionCredentials() {
if (sessionCredentials == null) {
if (securityToken == null) {
sessionCredentials = new SessionCredentials(accessKey, accessSecret);
} else {
sessionCredentials = new SessionCredentials(accessKey, accessSecret, securityToken);
}
} return sessionCredentials;
}
}

2、代码应用

  • 发送(或生产),这里代控制器由用户请求再发送消息(仅供参考):
@Controller
public class DemoController {
@Inject
private Producer producer; @Mapping("/send")
public void send(String msg) throws ClientException {
//发送
producer.send(new MessageBuilderImpl()
.setTopic("topic.test")
.setBody(msg.getBytes())
.build());
}
}
  • 监听(或消费),这里采用订阅回调的方式:(仅供参考)
@Component
public class DemoMessageListener implements MessageListener { @Override
public ConsumeResult consume(MessageView messageView) {
System.out.println(messageView); return ConsumeResult.SUCCESS;
}
}

solon 集成 rocketmq5 sdk的更多相关文章

  1. Solon集成(02)- 轻松吃下小馒头 Dubbo

    Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...

  2. iOS开发——高级篇——如何集成支付宝SDK

    一.什么是支付宝 第三方支付平台 和内购非常相似内购是用户将钱付款给苹果,之后苹果分成给商户支付宝是用户将钱付款给支付宝,之后支付宝将钱转入我们的账户 使用支付宝前提购买的物品必须是和应用程序无关的. ...

  3. 集成 WeChat SDK - 支付篇

    作者感言 惯例, 开头都是要说些东西的了, 随着现在的App越来越商业化, 很多公司的App都会集成第三方的支付SDK, 这样子的成本就比较低, 但是呢, 有很多朋友还是不太会集成, 也不太爱看集成文 ...

  4. 集成支付宝SDK遇到的坑

    一.首先我先把集成过程说一下.小编想说的话:支付宝是我做支付中觉得坑最多的一个,各种编译不过,各种出问题. 废话不多说,进入主题:1.首先当前是下载官方SDK啦,当前你也可以通过cocopods进行导 ...

  5. Android集成科大讯飞SDK语音听写及语音合成功能实现

    前言 现在软件设计越来越人性化.智能化.一些常见的输入都慢慢向语音听写方向发展,一些常见的消息提示都向语音播报发展.所以语音合成和语音听写是手机软件开发必不可少的功能.目前国内这方面做的比较好的应该是 ...

  6. 集成支付宝SDK流程

    5.2 SDK集成流程 5.2.1 iOS 解压接口压缩文件(文件名是 WS_MOBILE_PAY_SDK_BASE.zip),找到iOS的压缩文件(文件名是支付宝移动支付SDK 标准版(iOS).z ...

  7. 集成Facebook SDK

    1. 下载SDK https://developers.facebook.com/docs/ios?locale=zh_CN 2. 如何集成 https://developers.facebook.c ...

  8. 融云参加RTC实时互联网大会 现场集成IM SDK

    9月21至22日,由全球实时云服务商声网Agora.io主办的RTC2017实时互联网大会在北京万豪酒店成功举办.作为亚洲最权威的RTC实时通信行业技术盛会,会议吸引了来自全球上千名开发者参加,Goo ...

  9. 关于集成支付宝SDK的开发

    下载 首先,你要想找到这个SDK,都得费点功夫.如今的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 "请点此下载集成开发包" Baidu和Googlep排在前面的支付宝开 ...

  10. 朋友想玩下百度的ORC我鼓捣鼓捣thinkphp3集成百度sdk

    他想玩的是文字识别  那就玩下  咱们开始 1 先到百度文字识别  添加个应用  这样就有了APPID API KEY SECRET KEY https://console.bce.baidu.com ...

随机推荐

  1. DOM – ResizeObserver

    介绍 想监听一个 element 的 size changes 就可以使用 ResizeObserver 了. 在看这一篇之前, 建议先看看 DOM & BOM – IntersectionO ...

  2. idea运行java项目main方法报build failure错误的解决方法

    当在使用 IntelliJ IDEA 运行 Java 项目的 main 方法时遇到 "Build Failure" 错误,这通常意味着在项目的构建过程中遇到了问题.解决这类问题通常 ...

  3. Java项目笔记(四)

    1.包装类判断是否相等时,建议用equals 而不是 == 号 2.+= 默认包含了强制类型转换,单纯的s = s+1;编译是无法通过的,因为1属于int类型,必须显示声明强制类型转换 short s ...

  4. 如何对 Vue 首屏加载实现优化 ?

    首屏加载优化是对于 SPA 来说的 ,首次加载所有的 html css js 所需的文件 ,后面就不会因为用户对页面的操作而跳转页面 ,没有跳转页面如何展示不同的内容呢 ? 使用 Vue 的路由机制 ...

  5. AOT漫谈专题(第三篇): 如何获取C#程序的CPU利用率

    一:背景 1. 讲故事 上篇聊到了如何对AOT程序进行轻量级的APM监控,有朋友问我如何获取AOT程序的CPU利用率,本来我觉得这是一个挺简单的问题,但一研究不是这么一回事,这篇我们简单的聊一聊. 二 ...

  6. DirectoryOpus插件:“照得标管理器”-海量照片分类管理好帮手!

      照得标管理器 前言   名词解释:"照得标管理器",即:照片得到标签管理器,后文统一简称"照得标管理器"或"照得标".  注:请不要和抖 ...

  7. 云原生爱好者周刊:KubeSphere 3.3.0 Alpha 版发布

    开源项目推荐 Collection of Linux eBPF slides/documents 这个项目收集了各种与 eBPF 相关的资料,非常全面. magic-trace magic-trace ...

  8. [Go] 如何妥善处理 TCP 代理中连接的关闭

    如何妥善处理 TCP 代理中连接的关闭 相比较于直接关闭 TCP 连接,只关闭 TCP 连接读写使用单工连接的场景较少,但通用的 TCP 代理也需要考虑这部分场景. 背景 今天在看老代码的时候,发现一 ...

  9. EDUSRC | 记录几张edusrc证书站挖掘

    在web资产挖证书站是比较难的,尤其是没有账号密码进入后台或者统一的情况下,于是便转变思路,重点放在信息收集,收集偏远资产上. 一.XX大学 srping actuator未授权 茫茫c段,找到这么一 ...

  10. Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?

    Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的? 1.配置国内的Go模块的镜像 配置国内镜像代理(使用阿里云镜像) go env -w GOPROXY=h ...