最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中間消息件ActiveMQ使用實例

 更新時間:2019年11月14日 08:58:07   作者:小魚吃貓  
這篇文章主要介紹了Java中間消息件ActiveMQ使用實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

先來說一說我們?yōu)槭裁匆眠@個東西??!

比如,我們現(xiàn)在有這樣了個問題要解決:

這樣,我們就要用到中間消息間了

然后我們就說一下什么是中間消息間吧。

采用消息傳送機制/消息隊列 的中間件技術(shù),進(jìn)行數(shù)據(jù)交流,用在分布式系統(tǒng)的集成。
Java中對Jms有了定義,這是Java消息的統(tǒng)一接口。什么是ActiveMq呢?這是這個接口的一種實現(xiàn),相當(dāng)于數(shù)據(jù)庫連接驅(qū)動一樣,不同廠商有自己不同的實現(xiàn),我們盡快看怎么用代碼實現(xiàn)吧。

消息一共有兩種接收和發(fā)送形式:點對點和發(fā)布定閱模式,也就是“一對一”和“一對多”。

1.導(dǎo)包(maven):

  <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-client</artifactId>
      <version>5.13.4</version>
    </dependency>

2.開始寫類,提供者(發(fā)送者)和消費者(接收者)是兩個不同的項目,我們先創(chuàng)建普通的maven項目,而不是web項目點對點的方式(消息只能被消費一次,如果同時有多個消費者,誰先搶到就是誰的)

消息提供者

 public static void main(String[] args) throws JMSException {

    //創(chuàng)建連接工廠,這個參數(shù)就是自己的activeMQ的地址
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.創(chuàng)建連接
    Connection connection = connectionFactory.createConnection();

    //3.啟動連接
    connection.start();

    //4.獲取session(會話對象)
    /*
    arg0 是否啟用事務(wù)
    arg1 消息的確認(rèn)方式 自動確認(rèn)
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5.創(chuàng)建一個隊列對象,名稱
    Queue firstQueue = session.createQueue("firstQueue");

    //6.創(chuàng)建一個消息的生產(chǎn)者對象
//    Destination destination = ;//目標(biāo)對象
    MessageProducer producer = session.createProducer(firstQueue);

    //7.創(chuàng)建一個消息
    TextMessage textMessage = session.createTextMessage("歡迎來到奇的天喻軟件");

    //8.發(fā)送消息
    producer.send(textMessage);
    //9.關(guān)閉資源
    producer.close();
    session.close();
    connection.close();

  }

消息消費者

前幾步是一樣的,都是創(chuàng)建連接,只有第6步不一樣,創(chuàng)建的是一個消費者

public static void main(String[] args) throws JMSException, IOException {
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.創(chuàng)建連接
    Connection connection = connectionFactory.createConnection();

    //3.啟動連接
    connection.start();

    //4.獲取session(會話對象)
    /*
    arg0 是否啟用事務(wù)
    arg1 消息的確認(rèn)方式 自動確認(rèn)
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5.創(chuàng)建一個隊列對象,名稱
    Queue firstQueue = session.createQueue("firstQueue");



    //6.創(chuàng)建消息消費者對象
    MessageConsumer consumer = session.createConsumer(firstQueue);

    //7.設(shè)置監(jiān)聽
    consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage)message;
        try {
          System.out.println("提取的消息是"+textMessage.getText());
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    });

    //8.等待鍵盤輸入
    //目的是為了讓程序停止來看效果
    System.in.read();


    //9.關(guān)閉資源
    consumer.close();
    session.close();
    connection.close();
  }

發(fā)布訂閱模式(發(fā)布消息后,只有在之前運行的消費者才能收到,消息被任何一個消費者消費后,以后啟動的消費者不能消費之前的消息)

消息提供者

 //創(chuàng)建連接工廠
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.創(chuàng)建連接
    Connection connection = connectionFactory.createConnection();

    //3.啟動連接
    connection.start();

    //4.獲取session(會話對象)
    /*
    arg0 是否啟用事務(wù)
    arg1 消息的確認(rèn)方式 自動確認(rèn)
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5
    Topic topic = session.createTopic("first-topic");


    //6.創(chuàng)建一個消息的生產(chǎn)者對象
//    Destination destination = ;//目標(biāo)對象
    MessageProducer producer = session.createProducer(topic);

    //7.創(chuàng)建一個消息
    TextMessage textMessage = session.createTextMessage("歡迎來到奇的天喻軟件");

    //8.發(fā)送消息
    producer.send(textMessage);


    //9.關(guān)閉資源
    producer.close();
    session.close();
    connection.close();

消費者

    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");

    //2.創(chuàng)建連接
    Connection connection = connectionFactory.createConnection();

    //3.啟動連接
    connection.start();

    //4.獲取session(會話對象)
    /*
    arg0 是否啟用事務(wù)
    arg1 消息的確認(rèn)方式 自動確認(rèn)
     */
    Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

    //5
    Topic topic = session.createTopic("first-topic");



    //6.創(chuàng)建消息消費者對象
    MessageConsumer consumer = session.createConsumer(topic);

    //7.設(shè)置監(jiān)聽
    consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage)message;
        try {
          System.out.println("提取的消息是"+textMessage.getText());
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    });
    //8.等待鍵盤輸入
    //目的是為了讓程序停止來看效果
    System.in.read();
    //9.關(guān)閉資源
    consumer.close();
    session.close();
    connection.close();

總結(jié),是不是發(fā)現(xiàn)上邊代碼都很相似,那么完全可以用Spring來管理了啊

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實現(xiàn)

    Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實現(xiàn)

    這篇文章主要介紹了Java字符串駝峰與下?lián)Q線格式轉(zhuǎn)換如何實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • java實現(xiàn)簡單猜數(shù)字

    java實現(xiàn)簡單猜數(shù)字

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單猜數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java實現(xiàn)插入排序

    Java實現(xiàn)插入排序

    這篇文章主要介紹了Java實現(xiàn)插入排序,把一列數(shù)組按從小到大或從大到小排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot集成支付寶支付的實現(xiàn)示例

    SpringBoot集成支付寶支付的實現(xiàn)示例

    本文主要介紹了SpringBoot集成支付寶支付的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • JAVA開發(fā)環(huán)境Vs?code配置步驟詳解

    JAVA開發(fā)環(huán)境Vs?code配置步驟詳解

    這篇文章主要為大家介紹了JAVA開發(fā)環(huán)境Vs?code配置步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • spring boot配置ssl(多cer格式)超詳細(xì)教程

    spring boot配置ssl(多cer格式)超詳細(xì)教程

    這篇文章主要介紹了spring boot配置ssl(多cer格式)超詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • maven將項目打包上傳到nexus私服的詳細(xì)教程

    maven將項目打包上傳到nexus私服的詳細(xì)教程

    這篇文章主要介紹了maven將項目打包上傳到nexus私服,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-07-07
  • Java中Spring擴展點詳解

    Java中Spring擴展點詳解

    這篇文章主要介紹了Java中Spring技巧之?dāng)U展點的應(yīng)用,下文Spring容器的啟動流程圖展開其內(nèi)容的相關(guān)資料,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Java Objects工具類原理及用法詳解

    Java Objects工具類原理及用法詳解

    這篇文章主要介紹了Java Objects工具類原理及用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 詳解Java中的線程模型與線程調(diào)度

    詳解Java中的線程模型與線程調(diào)度

    這篇文章主要介紹了詳解Java中的線程模型與線程調(diào)度的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02

最新評論

竹北市| 南木林县| 九龙坡区| 南丰县| 襄垣县| 宣武区| 双辽市| 潼关县| 璧山县| 云林县| 云阳县| 罗平县| 会昌县| 眉山市| 夹江县| 安新县| 肇东市| 湖南省| 水富县| 西华县| 大英县| 泸溪县| 临沧市| 汉川市| 曲水县| 壤塘县| 乌拉特后旗| 新宁县| 福泉市| 普宁市| 邢台县| 资溪县| 渝北区| 鄂托克前旗| 无极县| 盐津县| 宜黄县| 临颍县| 临城县| 鹿泉市| 赤峰市|