链接阿里云的RocketMQ,发送信息,写一个公用的service类

RocketMQMessage模型类

这个类封装了消息发送所需的所有参数。

package com.aliyun.openservices;

public class RocketMQMessage {
    private String topicName;
    private String tag;
    private String key;
    private String body;
    private String messageGroup;

    public RocketMQMessage() {}

    public RocketMQMessage(String topicName, String tag, String key, String body, String messageGroup) {
        this.topicName = topicName;
        this.tag = tag;
        this.key = key;
        this.body = body;
        this.messageGroup = messageGroup;
    }

    public String getTopicName() {
        return topicName;
    }

    public void setTopicName(String topicName) {
        this.topicName = topicName;
    }

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getMessageGroup() {
        return messageGroup;
    }

    public void setMessageGroup(String messageGroup) {
        this.messageGroup = messageGroup;
    }
}

RocketMQService服务类

这个服务类使用RocketMQMessage类实例来发送消息。

package com.aliyun.openservices;

import org.apache.rocketmq.client.apis.ClientConfiguration;
import org.apache.rocketmq.client.apis.ClientConfigurationBuilder;
import org.apache.rocketmq.client.apis.ClientException;
import org.apache.rocketmq.client.apis.ClientServiceProvider;
import org.apache.rocketmq.client.apis.producer.Producer;
import org.apache.rocketmq.client.apis.producer.SendReceipt;
import org.apache.rocketmq.client.apis.message.MessageBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;

@Service
public class RocketMQService {

    @Value("${rocketmq.endpoint}")
    private String endpoint;

    @Value("${rocketmq.username}")
    private String username;

    @Value("${rocketmq.password}")
    private String password;

    public SendReceipt sendMessage(RocketMQMessage message) throws ClientException {
        ClientServiceProvider provider = ClientServiceProvider.loadService();
        ClientConfigurationBuilder configBuilder = ClientConfiguration.newBuilder().setEndpoints(endpoint);
        if (username != null && password != null) {
            configBuilder.setCredentialProvider(
                new StaticSessionCredentialsProvider(username, password)
            );
        }
        ClientConfiguration configuration = configBuilder.build();

        Producer producer = provider.newProducerBuilder()
                .setClientConfiguration(configuration)
                .setTopics(message.getTopicName())
                .build();

        MessageBuilder builder = provider.newMessageBuilder()
                .setTopic(message.getTopicName())
                .setBody(message.getBody().getBytes(StandardCharsets.UTF_8));

        if (message.getKey() != null && !message.getKey().isEmpty()) {
            builder.setKeys(message.getKey());
        }

        if (message.getTag() != null && !message.getTag().isEmpty()) {
            builder.setTag(message.getTag());
        }

        if (message.getMessageGroup() != null && !message.getMessageGroup().isEmpty()) {
            builder.setMessageGroup(message.getMessageGroup());
        }

        SendReceipt sendReceipt = producer.send(builder.build());
        System.out.println("Send mq message success! Topic is:" + message.getTopicName() + " msgId is: " + sendReceipt.getMessageId().toString());

        producer.close();

        return sendReceipt;
    }
}

application.properties配置文件

# RocketMQ配置
rocketmq.endpoint=你的RocketMQ接入点
rocketmq.username=你的用户名
rocketmq.password=你的密码

请确保将你的RocketMQ接入点你的用户名你的密码替换成你自己的RocketMQ服务的实际接入点、用户名和密码。

通过这种方式,我们创建了一个灵活的服务类RocketMQService,它可以发送包含各种参数的消息到RocketMQ。通过使用RocketMQMessage类来封装消息参数,我们简化了方法的调用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值