消息隊列

 

消息隊列(Message Queue,簡稱 MQ)是阿里巴巴集團中間件技術部自主研發的專業消息中間件。產品基於高可用分佈式集羣技術,提供消息發佈訂閱、消息軌跡查詢、定時(延時)消息、資源統計、監控報警等一系列消息雲服務,是企業級互聯網架構的核心產品。MQ 歷史超過9年,爲分佈式應用系統提供異步解耦、削峯填谷的能力,同時具有海量消息堆積、高吞吐、可靠重試等互聯網應用所需的特性,是阿里巴巴雙11使用的核心產品。html

MQ 是阿里雲正式商用的產品,目前在阿里雲多個地域(Region)提供了高可用消息雲服務,單個域內採用多機房部署,可用性極高,即便整個機房都不可用,仍然能夠爲應用提供消息發佈服務,產品穩定性及可用性徹底按照阿里巴巴內部標準來實施,無單點。java

MQ 目前提供 TCP、HTTP、MQTT 三種協議層面的接入方式,支持 Java、C++ 以及 .NET 不一樣語言,方便不一樣編程語言開發的應用快速接入 MQ 消息雲服務。用戶能夠將應用部署在阿里雲 ECS、企業自建雲,或者嵌入到移動端、物聯網設備中與 MQ 創建鏈接進行消息收發,同時本地開發者也能夠經過公網接入 MQ 服務進行消息收發。編程

 

參考阿里雲消息隊列:c#

https://help.aliyun.com/document_detail/29537.html?spm=5176.product29530.6.548.BaK6km服務器

https://ons.console.aliyun.com/?spm=5176.6660585.774526198.1.3avQ5c#/home/pub架構

1,Maven 方式引入依賴異步

<dependency>
   <groupId>com.aliyun.openservices</groupId>
   <artifactId>ons-client</artifactId>
   <version>1.2.1</version>
</dependency>

 

2,發送消息編程語言

主動觸發消息發送;先進行參數初始化,而後再調用消息發送分佈式

public class ProducerTest {
 public static void main(String[] args) {
     Properties properties = new Properties();
     properties.put(PropertyKeyConst.ProducerId, "XXX");// 您在MQ控制檯建立的Producer ID
     properties.put(PropertyKeyConst.AccessKey,"XXX");// 鑑權用AccessKey,在阿里雲服務器管理控制檯建立
     properties.put(PropertyKeyConst.SecretKey, "XXX");// 鑑權用SecretKey,在阿里雲服務器管理控制檯建立
     Producer producer = ONSFactory.createProducer(properties);
     // 在發送消息前,必須調用start方法來啓動Producer,只需調用一次便可
     producer.start();
     //循環發送消息
     while(true){
         Message msg = new Message( //
             // Message Topic
             "TopicTestMQ",
             // Message Tag,
             // 可理解爲Gmail中的標籤,對消息進行再歸類,方便Consumer指定過濾條件在MQ服務器過濾
             "TagA",
             // Message Body
             // 任何二進制形式的數據, MQ不作任何干預,
             // 須要Producer與Consumer協商好一致的序列化和反序列化方式
             "Hello MQ".getBytes());
         // 設置表明消息的業務關鍵屬性,請儘量全局惟一,以方便您在沒法正常收到消息狀況下,可經過MQ控制檯查詢消息並補發
         // 注意:不設置也不會影響消息正常收發
         msg.setKey("ORDERID_100");
         // 發送消息,只要不拋異常就是成功
         // 打印Message ID,以便用於消息發送狀態查詢
         SendResult sendResult = producer.send(msg);
         System.out.println("Send Message success. Message ID is: " + sendResult.getMessageId());
     }
     // 在應用退出前,能夠銷燬Producer對象
     // 注意:若是不銷燬也沒有問題
     producer.shutdown();
 }
}

3,接受消息阿里雲

該部分有名訂閱消息;  將訂閱消息Service使用Spring上下文進行初始化後,訂閱消息功能將處於監聽狀態,消息發送後將自動被接收,並觸發其餘業務功能

public class ConsumerTest {
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(PropertyKeyConst.ConsumerId, "XXX");// 您在MQ控制檯建立的Consumer ID
        properties.put(PropertyKeyConst.AccessKey, "XXX");// 鑑權用AccessKey,在阿里雲服務器管理控制檯建立
        properties.put(PropertyKeyConst.SecretKey, "XXX");// 鑑權用SecretKey,在阿里雲服務器管理控制檯建立
        Consumer consumer = ONSFactory.createConsumer(properties);
        consumer.subscribe("TopicTestMQ", "*", new MessageListener() {
            public Action consume(Message message, ConsumeContext context) {
                System.out.println("Receive: " + message);
                return Action.CommitMessage;
            }
        });
        consumer.start();
        System.out.println("Consumer Started");
    }
}
相關文章
相關標籤/搜索