全部产品
云市场

收发顺序消息

更新时间:2019-02-26 20:16:41

发送顺序消息

发送顺序消息的示例代码如下:

  1. using System;
  2. using ons;
  3. public class OrderProducerExampleForEx
  4. {
  5. public OrderProducerExampleForEx()
  6. {
  7. }
  8. static void Main(string[] args) {
  9. // 配置您的账号,以下设置均可从控制台获取
  10. ONSFactoryProperty factoryInfo = new ONSFactoryProperty();
  11. // AccessKey 阿里云身份验证,在阿里云服务器管理控制台创建
  12. factoryInfo.setFactoryProperty(ONSFactoryProperty.AccessKey, "Your access key");
  13. // SecretKey 阿里云身份验证,在阿里云服务器管理控制台创建
  14. factoryInfo.setFactoryProperty(ONSFactoryProperty.SecretKey, "Your access secret");
  15. // 您在控制台创建的 Group ID
  16. factoryInfo.setFactoryProperty(ONSFactoryProperty.ProducerId, "GID_example");
  17. // 您在控制台创建的 Topic
  18. factoryInfo.setFactoryProperty(ONSFactoryProperty.PublishTopics, "T_example_topic_name");
  19. // 设置 TCP 接入域名,进入控制台的实例管理页面的“获取接入点信息”区域查看
  20. factoryInfo.setFactoryProperty(ONSFactoryProperty.NAMESRV_ADDR, "NameSrv_Addr");
  21. // 设置日志路径
  22. factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");
  23. // 创建生产者实例
  24. // 说明:生产者实例是线程安全的,可用于发送不同 Topic 的消息。基本上,您每一个线程
  25. // 只需要一个生产者实例
  26. OrderProducer producer = ONSFactory.getInstance().createOrderProducer(factoryInfo);
  27. // 启动客户端实例
  28. producer.start();
  29. // 创建消息对象
  30. Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", "Example message body");
  31. string shardingKey = "App-Test";
  32. for (int i = 0; i < 32; i++) {
  33. try
  34. {
  35. SendResultONS sendResult = producer.send(msg, shardingKey);
  36. Console.WriteLine("send success {0}", sendResult.getMessageId());
  37. }
  38. catch (Exception ex)
  39. {
  40. Console.WriteLine("send failure{0}", ex.ToString());
  41. }
  42. }
  43. // 在您的线程即将退出时,关闭生产者实例
  44. producer.shutdown();
  45. }
  46. }

消费顺序消息的示例代码如下:

  1. using System;
  2. using System.Text;
  3. using System.Threading;
  4. using ons;
  5. namespace demo
  6. {
  7. public class MyMsgOrderListener : MessageOrderListener
  8. {
  9. public MyMsgOrderListener()
  10. {
  11. }
  12. ~MyMsgOrderListener()
  13. {
  14. }
  15. public override ons.OrderAction consume(Message value, ConsumeOrderContext context)
  16. {
  17. Byte[] text = Encoding.Default.GetBytes(value.getBody());
  18. Console.WriteLine(Encoding.UTF8.GetString(text));
  19. return ons.OrderAction.Success;
  20. }
  21. }
  22. class OrderConsumerExampleForEx
  23. {
  24. static void Main(string[] args)
  25. {
  26. // 配置您的账号,以下设置均可从控制台获取
  27. ONSFactoryProperty factoryInfo = new ONSFactoryProperty();
  28. // AccessKey 阿里云身份验证,在阿里云服务器管理控制台创建
  29. factoryInfo.setFactoryProperty(ONSFactoryProperty.AccessKey, "Your access key");
  30. // SecretKey 阿里云身份验证,在阿里云服务器管理控制台创建
  31. factoryInfo.setFactoryProperty(ONSFactoryProperty.SecretKey, "Your access secret");
  32. // 您在控制台创建的 Group ID
  33. factoryInfo.setFactoryProperty(ONSFactoryProperty.ConsumerId, "GID_example");
  34. // 您在控制台创建的 Topic
  35. factoryInfo.setFactoryProperty(ONSFactoryProperty.PublishTopics, "T_example_topic_name");
  36. // 设置 TCP 接入域名,进入控制台的实例管理页面的“获取接入点信息”区域查看
  37. factoryInfo.setFactoryProperty(ONSFactoryProperty.NAMESRV_ADDR, "NameSrv_Addr");
  38. // 设置日志路径
  39. factoryInfo.setFactoryProperty(ONSFactoryProperty.LogPath, "C://log");
  40. // 创建生产者实例
  41. OrderConsumer consumer = ONSFactory.getInstance().createOrderConsumer(factoryInfo);
  42. // 订阅 Topic
  43. consumer.subscribe(factoryInfo.getPublishTopics(), "*",new MyMsgOrderListener());
  44. // 启动消费者实例
  45. consumer.start();
  46. // 让主线程睡眠一段时间
  47. Thread.Sleep(30000);
  48. // 不再使用时,关闭消费者实例
  49. consumer.shutdown();
  50. }
  51. }
  52. }