调用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>&lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;com.paic.fincloud&lt;/groupId&gt; &nbsp; &nbsp; &lt;artifactId&gt;fmq-client&lt;/artifactId&gt; &nbsp; &nbsp; &lt;version&gt;1.0.0&lt;/version&gt; &lt;/dependency&gt; &lt;!&mdash;其它依赖包 --&gt; &lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &nbsp; &nbsp; &lt;artifactId&gt;fastjson&lt;/artifactId&gt; &nbsp; &nbsp; &lt;version&gt;1.2.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;io.netty&lt;/groupId&gt; &nbsp; &nbsp; &lt;artifactId&gt;netty-all&lt;/artifactId&gt; &nbsp; &nbsp; &lt;version&gt;4.0.25.Final&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;org.slf4j&lt;/groupId&gt; &nbsp; &nbsp; &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt; &nbsp; &nbsp; &lt;version&gt;1.7.5&lt;/version&gt; &lt;/dependency&gt;</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>
以上内容是否解决了您的问题?
请补全提交信息!
咨询·建议

电话咨询

400-151-8800

邮件咨询

cloud@pingan.com

在线客服

工单支持

解决云产品相关技术问题