调用SDK发送消息
<p>本文主要以调用 TCP 协议的Java SDK 为例,说明如何调用SDK发送消息。</p>
<p>前提条件</p>
<ul>
<li>您已成功在控制台创建Topic、申请发布和订阅。</li>
<li>您已成功创建ECS云主机,可参考<a href="https://pinganyun.com/ssr/help/compute/ecs/manual.Instance.Create_ECS_Instance" target="_blank">创建ECS实例</a>。</li>
<li>您已成功在ECS上安装IntelliJ或其他开发工具。</li>
</ul>
<p>背景信息</p>
<p>通过控制台完成Topic、生产者、消费者等资源创建后,您需要集成SDK到客户端应用程序,并完成消息发送的业务逻辑代码实现。</p>
<p>操作步骤</p>
<ol>
<li>通过Maven方式引入依赖。
<pre>
<code><dependency>
<groupId>com.paic.fincloud</groupId>
<artifactId>fmq-client</artifactId>
<version>1.0.0</version>
</dependency>
<!—其它依赖包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.0.25.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency></code>
<code>
</code></pre>
</li>
<li>根据以下说明设置相关参数,并运行示例代码发送消息。
<pre>
<code>public static Producer initProducer() throws FCException {
// 准备所需参数。
Properties propertie = new Properties();
// 业务系统可以从配置文件中取出属性值,demo中写死。
propertie.setProperty(FCConstant.PRODUCER_ID, "PID-demo");// 必须配置,在控制台创建。
propertie.setProperty(FCConstant.NAME_SERVER_ADDRESS, "NAME_SERVER_ADDR-demo");// 必须配置,环境IP地址。
// 设置ak/sk,从控制台获取。
propertie.setProperty(FCConstant.ACCESS_KEY, "ACCESSKEY-demo");
propertie.setProperty(FCConstant.SECRET_KEY, "SECRETKEY-demo");
// 获取MQCPProducer实例,producer是单实例的。
Producer producer = FCFactory.createProducer(propertie);
// 启动服务
producer.start();
return producer;
}
public static void sendMsg(Producer producer) {
try {
String topic = Constant.TOPIC;// 发送消息,如果需要往不同的topic发送消息,传不同的topic即可。
FCMessage message = TestProducer.generateMsg(topic);
// 发送消息。
// 成功则会返回状态,失败的情况下会直接抛出异常。
FCSendResult sendResult = producer.sendMessage(message);
// 建议业务端添加一些日志来记录发送消息的状态,例如消息ID、消息TAG、消息KEY、消息发送状态等。
System.out.println("####msg status:" + sendResult.getSendStatus() + " msgId:" + sendResult.getMessageId());
} catch (FCException ex) {
// TODO:消息发送失败,此处业务系统可以增加一些异常处理。但不建议直接重试发送消息,mqcp内部sendmsg有重试机制。
// 重试次数为3次,且轮询broker重试,重试时间默认不超过10s。但如果是超时异常,则不会重试。
// 建议业务系统存储到数据库,由后台定时重试。
ex.printStackTrace();
}
}
</code></pre>
</li>
<li>消息发送后,您可以通过控制台Message Id 查询查看消息发送状态,若能查询到消息,则代表消息发送成功。可参考<a href="https://pinganyun.com/ssr/help/middleware/pamq/manual.message_search.id_search" target="_blank">Message Id</a>查询。</li>
</ol>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!