使用 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. Identity – Authorize Custom Authorization Policy Providers

    前言 上一篇讲完了基本使用 Policy-Based. 这一篇另外说一说怎么动态调用它. 参考: Custom Authorization Policy Providers using IAuthor ...

  2. Nuxt Kit 中的上下文处理

    title: Nuxt Kit 中的上下文处理 date: 2024/9/16 updated: 2024/9/16 author: cmdragon excerpt: Nuxt Kit 提供的上下文 ...

  3. PyCharm 的一些基本设置&&常用插件&&快捷键

    PyCharm一些基本设置   1.主题色彩   2.添加设置:Ctrl+鼠标滚轮上下调节字体大小           3. 中文语言包   4.翻译插件 5.快捷键

  4. 暑假集训CSP提高模拟5

    听好了: 7 月 22 日,比样的学长就此陷落.每个陷落的学长都将迎来一场模拟赛,为这些模拟赛带来全新的题面. 你所熟知的一切都将改变,你所熟悉的算法都将加诸比样的考验. 至此,一锤定音. 尘埃,已然 ...

  5. docker安装及基本的镜像拉取

    docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...

  6. Android应用启动流程一次看透

    1.1.冷启动和热启动 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,然后再根据启动的参数,启动对应的进程组件,这个启动方式就是冷启动. 热启动:当启动应用时 ...

  7. 2024年1月中国数据库排行榜: OPOT 组合续写贺新年,达梦、腾讯发力迎升势

    2024年开局,墨天轮中国数据库流行度排行火热出炉,292个国产数据库齐聚榜单.整体来看,榜单前十整体变化不大,"O-P-O"格局稳固,前五位名次未发生变动.但新年伊始,各家数据库 ...

  8. 用sdkman管理多个jdk切换

    前言 最近项目前后端进行升级,需要在jdk8和jdk17两个版本切换.最简单的是通过手动切换,但切换过程太繁琐,修改环境变量,达到切换目的.于是尝试其它解决方案,最终确实使用sdkman工具. sdk ...

  9. 深入理解Java并发读写锁——ReentrantReadWriteLock

    ReentrantReadWriteLock使用场景 ReentrantReadWriteLock 是 Java 的一种读写锁,它允许多个读线程同时访问,但只允许一个写线程访问(会阻塞所有的读写线程) ...

  10. Top100(中)

    Top100(中) 二叉树 94. 二叉树的中序遍历 int *res; void inorder(struct TreeNode *root, int *returnSize) { if (root ...