91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ActiveMQ的安裝、運用

發布時間:2020-08-05 19:38:40 來源:網絡 閱讀:674 作者:柴絲言 欄目:開發技術

1、下載ActiveMQ:http://activemq.apache.org/

2、解壓包,并找到activemq.bat,雙擊打開一個控制臺,跟你打開tomcat一樣的。如圖:

ActiveMQ的安裝、運用

3、在瀏覽器查看你的activemq是否正確啟動:http://localhost:8161/admin,打開之后看到這樣:  

ActiveMQ的安裝、運用                   

用戶名:admin  密碼:admin

確定即可登錄。


4、你可以新建一個Queue,在  Queue Name后面的方框中填入“MyFirstQueue”,點擊正后方“Create”按鈕即可。

ActiveMQ的安裝、運用

在下面Queues:列表中,就會顯示你剛剛新建的Queue:

ActiveMQ的安裝、運用這是已經使用過的,其實一開始數值是這樣的:   

                                          

Name    :      MyFirstQueue     

Number Of   ending Message  : 0

Number Of   Consumers :0

Message Enqueued:0

Message Dequeued:0


5、接下來我們通過IDEA來創建兩個java類,一個是消息生產者,一個是消息消費者。

這是消息生產者:

package com.zfm.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Sender {
    private static final int SEND_NUMBER =5;
    public static void main(String[] args){
        //ConnectionFactory:連接工廠
        ConnectionFactory  connectionFactory;
        //Connection:JMS客戶端到JMS Provider的連接
        Connection connection = null;
        //Session :一個會話,發送或接收消息的線程
        Session session;
        //Destination:消息的目的地
        Destination destination;
        //MessageProducer:消息產生者:發送
        MessageProducer messageProducer;
        //構造connectionFactory實例對象

        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616"/*ActiveMQ默認使用的TCP連接端口是61616,*/
        );

        try{
            //構造從工廠得到的連接
            connection = connectionFactory.createConnection();
            //啟動
            connection.start();
            //獲取操作連接
            session = connection.createSession(Boolean.TRUE,
                    Session.AUTO_ACKNOWLEDGE);
            //獲取session的參數

            destination = session.createQueue("FMDemo");
            //得到消息生成者
            messageProducer = session.createProducer(destination);

            //設置·不持久化
            messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            //構造消息
            sendMeaasge(session,messageProducer);
            session.commit();


        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(null!=connection){
                    connection.close();
                }
            }catch (Throwable t){

            }
        }
    }

    public static void sendMeaasge(Session session,MessageProducer producer) throws JMSException {
        for(int i=1;i<=SEND_NUMBER;i++){
            TextMessage  message = session.createTextMessage("ActiveMq 發送的消息" +i);
            //發送消息到目的地
            System.out.println("發送消息: ActiveMq發送消息:" + i);
            producer.send(message);
        }

    }
}

消息消費者:

package com.zfm.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class Receiver {
    public static void main(String[] rags) throws JMSException {
        //Connection連接工廠
        ConnectionFactory connectionFactory;
        //Connection:JMS客戶端到JMS provider
        Connection connection = null;
        //Session : 一個發送或接受消息的·會話
        Session session;
        //Destination:消息的目的地,消息發送給誰
        Destination destination;
        //消費者,消息接收者
        MessageConsumer messageConsumer;

        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616"http://ActiveMQ默認使用的TCP連接端口是61616,
        );
        try{
            //從構造工廠里獲得連接
            connection = connectionFactory.createConnection();
            //一定要啟動
            connection.start();

            //從連接獲得會話
            session = connection.createSession(Boolean.FALSE
            ,Session.AUTO_ACKNOWLEDGE);

            destination = session.createQueue("FMDemo");
            messageConsumer = session.createConsumer(destination);
            while(true){
                //設置接收者接受新消息的時間
                TextMessage message = (TextMessage)messageConsumer.receive(100000);
                if(null!=message){
                    System.out.println("收到消息" + message.getText());
                }else{
                    break;
                }
            }



        }catch (Exception e){

        }finally {
            try{
                if(null != connection) {
                    connection.close();
                }
            }catch(Throwable t){

            }
        }

    }
}

當運行Sender.java之后,刷新http://localhost:8161/admin/queues.jsp時,

Queues表中的參數有變化咯:


Name    :     MyFirstQueue

Number Of   Pending Message  :5

Number Of   Consumers :0

Message  Enqueued :5

Message  Dequeued    :0



此時,由于消息已經發完,并且我們沒有讓Sender的main函數一直運行,所以,在控制臺打印了:

發送消息: ActiveMq發送消息:1
發送消息: ActiveMq發送消息:2
發送消息: ActiveMq發送消息:3
發送消息: ActiveMq發送消息:4
發送消息: ActiveMq發送消息:5

Process finished with exit code 0


進程結束了。




這時我們再運行Receiver.java,而后控制臺打印:

收到消息ActiveMq 發送的消息1
收到消息ActiveMq 發送的消息2
收到消息ActiveMq 發送的消息3
收到消息ActiveMq 發送的消息4
收到消息ActiveMq 發送的消息5


Process finished with exit code 0


此時,再刷新http://localhost:8161/admin/queues.jsp,此時表格數值變為:

Name    :     MyFirstQueue

Number Of   Pending Message  :0

Number Of   Consumers :0

Message  Enqueued :5

Message  Dequeued    :5


還有一點是:當Receiver.java并沒有運行結束的時候,由于我只開啟了一個Receiver進程,所以這時Number Of   Consumers:1。


可見,由Sender發出的消息已經被Receiver收到了。你可以先把Sender消息發出來,這個時候只要消息已經到消息隊列上了,只要你不期望發送者還要接收什么回復,你就可以把Sender停掉了。Receiver還是一樣的接收到信息。



下面介紹一下ActiveMQ的幾種基本通信方式:發布-訂閱模式和點對點模式。

基礎流程:

1、獲得ActiveMQConnectionFactory。

2、利用factory獲得Connection。

3、啟動connection

4、通過connection創建Session。

5、指定Session的Destination。

6、發送消息者則創建MessageProducer/接收消息者創建MessageConsumer。

7、發送和接收JMS Message。

8、關閉所有JMS資源。


ActiveMQ詳情見http://shmilyaw-hotmail-com.iteye.com/blog/1897635

講到ActiveMQ,其實他是java消息服務(JMS)的其中一種規范,JMS詳情見:http://blog.csdn.net/jiuqiyuliang/article/details/46701559      http://blog.csdn.net/jiuqiyuliang/article/details/47160259。


什么情況下使用ActiveMQ?
  1. 多個項目之間集成
    (1) 跨平臺
    (2) 多語言
    (3) 多項目

  2. 降低系統間模塊的耦合度,解耦
    (1) 軟件擴展性

  3. 系統前后端隔離
    (1) 前后端隔離,屏蔽高安全區




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西畴县| 新竹市| 长丰县| 博爱县| 耿马| 仁化县| 修水县| 鹿邑县| 奉化市| 宁国市| 台江县| 荣成市| 柯坪县| 天台县| 改则县| 灵璧县| 延长县| 南皮县| 栾川县| 宝鸡市| 桦南县| 闵行区| 将乐县| 双牌县| 南阳市| 咸宁市| 老河口市| 宜城市| 呼玛县| 灌云县| 彰化县| 喀什市| 大余县| 广灵县| 三台县| 蓬莱市| 鄂伦春自治旗| 阳江市| 漠河县| 海口市| 邯郸县|