分布式消息服务ROCKETMQ版-发送定时消息:取消定时消息
时间:2024-08-02 18:22:21
取消定时消息
取消定时消息的示例代码如下:
import org.apache.rocketmq.client.apis.ClientConfiguration; import org.apache.rocketmq.client.apis.ClientException; import org.apache.rocketmq.client.apis.ClientServiceProvider; import org.apache.rocketmq.client.apis.SessionCredentialsProvider; import org.apache.rocketmq.client.apis.StaticSessionCredentialsProvider; import org.apache.rocketmq.client.apis.message.Message; import org.apache.rocketmq.client.apis.producer.Producer; import org.apache.rocketmq.client.apis.producer.SendReceipt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.Duration; public class ProducerDelayMessageExample { private static final Logger log = LoggerFactory.getLogger(ProducerDelayMessageExample.class); public static void main(String[] args) throws ClientException, IOException { final ClientServiceProvider provider = ClientServiceProvider.loadService(); String topic = "yourDelayTopic"; // 填入grpc连接地址/grpc公网连接地址 String endpoints = "yourEndpoints"; // 填入用户名/密钥,用户名和密钥直接硬编码到代码中或者明文存储都存在很大的风险,建议在配置文件或者环境变量中密文存放,使用时解密。创建实例时,如果开启了ACL才需要添加以下代码。 String accessKey = System.getenv("ROCKETMQ_AK"); String secretKey = System.getenv("ROCKETMQ_SK"); SessionCredentialsProvider sessionCredentialsProvider = new StaticSessionCredentialsProvider(accessKey, secretKey); ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder() .setEndpoints(endpoints) // .enableSsl(false) // 创建实例时,如果开启了SSL,请增加此行代码。 // .setCredentialProvider(sessionCredentialsProvider) // 创建实例时,如果开启了ACL,请添加此行代码。 .build(); final Producer producer = provider.newProducerBuilder() .setClientConfiguration(clientConfiguration) .setTopics(topic) .build(); try { // ====== 发送定时消息逻辑 ====== byte[] body = "This is a delay message for Apache RocketMQ".getBytes(StandardCharsets.UTF_8); String tag = "yourMessageTagA"; Duration messageDelayTime = Duration.ofSeconds(10); final Message message = provider.newMessageBuilder() .setTopic(topic) .setTag(tag) .setKeys("yourMessageKey") // 设置定时消息投递时间戳 .setDeliveryTimestamp(System.currentTimeMillis() + messageDelayTime.toMillis()) .setBody(body) .build(); final SendReceipt sendReceipt = producer.send(message); log.info("Send message successfully, messageId={}", sendReceipt.getMessageId()); // ====== 发送取消消息逻辑 ====== // 创建取消消息对象 Message cancle = provider.newMessageBuilder() .setTopic(topic) .setBody("cancel".getBytes(StandardCharsets.UTF_8)) // 设置取消消息的时间戳,该时间戳必须与要取消的定时消息的定时时间戳一致。 .setDeliveryTimestamp(message.getDeliveryTimestamp().get()) // 设置要取消消息的ID,为发送消息的唯一ID(UNIQUE_KEY),可以从发送消息的结果中获取。 .addProperty("__CANCEL_SCHEDULED_MSG", sendReceipt.getMessageId().toString()) .build(); // 发送取消消息,必须在定时消息被投递之前发送才可以取消。 final SendReceipt cancelSendReceipt = producer.send(cancle); log.info("Send cancel message successfully, messageId={}", cancelSendReceipt.getMessageId()); } catch (Throwable t) { log.error("Failed to send message", t); } // 不再使用后,手动关闭producer。 producer.close(); } }
support.huaweicloud.com/devg-hrm/hrm-devg-031.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章
- RocketMQ是什么_RocketMQ介绍_分布式消息服务RocketMQ版
- 分布式消息服务Kafka版与分布式消息服务RocketMQ版的区别_Kafka与RocketMQ对比_Kafka与RocketMQ差异
- 短信发送服务_短信定时发送_虚拟电话短信
- RocketMQ的架构_RocketMQ的消息模式_分布式消息RocketMQ-华为云
- 分布式消息服务优势_分布式消息服务_消息队列-华为云
- 分布式消息服务有哪些_分布式消息服务哪个好_分布式消息-华为云
- RocketMQ主要应用场景有哪些_分布式消息中间件_分布式消息RocketMQ-华为云
- 分布式消息中间件的作用_分布式消息中间件_分布式消息-华为云
- Kafka与其他消息队列的对比_什么是Kafka_分布式消息系统-华为云
- 怎么群发消息_短信如何发消息_短信息发送