ActiveMQ簡單的入門demo
阿新 • • 發佈:2018-12-14
:)
1.為什麼使用ActiveMQ
1.1.簡介
MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過寫和檢索出入列隊的針對應用程式的資料(訊息)來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用於諸如遠端過程呼叫的技術。排隊指的是應用程式通過佇列來通訊。佇列的使用除去了接收和傳送應用程式同時執行的要求。
1.2.MQ特點
MQ的消費-生產者模型的一個典型的代表,一端往訊息佇列中不斷的寫入訊息,而另一端則可以讀取或者訂閱佇列中的訊息。
1.3.使用場景
在專案中,將一些無需即時返回且耗時的操作提取出來,進行了非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。
2.基本操作的demo
//生產者 static void testMQProducerQueue() throws Exception{ //建立連線工廠,設定ip和埠號 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL); //建立連線 Connection connection = connectionFactory.createConnection(); //開啟連線 connection.start(); //建立會話 Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //建立佇列,佇列名叫test-queue Queue queue =session.createQueue("test-queue"); //建立訊息生產者 MessageProducer producer = session.createProducer(queue); //建立一個字串訊息 TextMessage textMessage = session.createTextMessage("hellow_mq"); //傳送訊息 producer.send(textMessage); //關閉資源 producer.close(); session.close(); connection.close(); } //消費者 static void testMQConsumerQueue() throws Exception{ //建立連線工廠,設定ip和埠號 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL); //建立連線 Connection connection = connectionFactory.createConnection(); //開啟連線 connection.start(); //建立會話 Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //建立佇列,佇列名叫test-queue Queue queue =session.createQueue("test-queue"); //建立消費者 MessageConsumer consumer = session.createConsumer(queue); //建立訊息監聽器 consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { if (message instanceof TextMessage){ TextMessage textMessage = (TextMessage)message; try { System.out.println(textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } } }); //程式接收內容,主要是為了不讓連線那麼快關閉,因為訊息可能還沒來得及過來 System.in.read(); //關閉資源 consumer.close(); session.close(); connection.close(); }
3.能幹什麼
1.流量削峰
2.任務非同步處理
特點:可以解耦合
(學習新技術的三要素:是什麼?能幹什麼?有什麼優勢?)