<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    中文JAVA技術平等自由協作創造

    Java專題文章博客和開源

    常用鏈接

    統計

    最新評論

    Java獲取php端放入rabbitmq內的消息

      背景:項目中一個場景需要用java端的處理代碼獲取php端放到rabbitmq內的消息,然后做相應業務的處理。

      前提:rabbitmq服務器已經搭建好,php端的消息發布正常運行。

      首先:下載rabbitmq-client對應的java版jar包(spring好像有相應的支持)

      開始代碼coding的工作,上代碼

      package com.eelly.imagesearch.common;

      import com.rabbitmq.client.Channel;

      import com.rabbitmq.client.Connection;

      import com.rabbitmq.client.ConnectionFactory;

      import com.rabbitmq.client.GetResponse;

      public class RabbitMqControll {

      /**

      * 讀取RabbitMq中的存儲信息

      *

      * @param queue_name 隊列名

      * @param exchange_name 交換機名

      * @param route_key 綁定用到的route_key

      * @param durable 是否持久化

      */

      public void readRabbitMqInfo (String queue_name,

      String exchange_name, String route_key, boolean durable)

      {

      ConnectionFactory factory = new ConnectionFactory();

      // 設置服務器ip

      factory.setHost("172.18.107.66");

      // 設置rabbitmq服務器運行的端口

      factory.setPort(5672);

      // 設置rabbitmq服務器連接用戶

      factory.setUsername("guest");

      // 設置rabbitmq服務器連接用戶密碼

      factory.setPassword("guest");

      // 設置rabbitmq服務器節點目錄(個人理解)

      factory.setVirtualHost("/");

      try {

      // 創建工廠連接

      Connection connection = factory.newConnection();

      // 創建通道

      Channel channel = connection.createChannel();

      // 聲明交換機(設置相關屬性時需要和php端的一致)

      channel.exchangeDeclare(exchange_name, "direct", durable);

      // 聲明消息隊列(設置相關屬性時需要和php端的一致)

      channel.queueDeclare(queue_name, durable, false, true, null);

      // 綁定消息隊列(設置相關屬性時需要和php端的一致)

      channel.queueBind(queue_name, exchange_name, route_key);

      System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

      // basicConsume消費模式

      /*channel.basicQos(1);//消息分發處理

      QueueingConsumer consumer = new QueueingConsumer(channel);

      channel.basicConsume(queue_name, false, consumer);

      while (true) {

      QueueingConsumer.Delivery delivery = consumer.nextDelivery();

      String message = new String(delivery.getBody());

      System.out.println(" [x] Received '" + message + "'");

      // 提交消息處理完成回復

      channel.basicAck(delivery.getEnvelope()。getDeliveryTag(), false);

      }*/

      // basicGet消費模式

      while (true)

      {

      // get方式主動消費

      GetResponse res=channel.basicGet(queue_name, false);

      if (res != null && res.getMessageCount() >= 0)

      {

      System.out.println(res.getMessageCount());

      String message = "";

      message = new String(res.getBody());

      channel.basicAck(res.getEnvelope()。getDeliveryTag(), false);

      System.out.println(" [x] Received '" + message + "'");

      }

      else

      {

      System.out.println("消息隊列中沒有可消費的信息!");

      break;

      }

      }

      channel.close();

      connection.close();

      } catch (Exception e) {

      e.printStackTrace();

      }

      }

      }

      在開發的過程中,主要報的異常是:

      1.創建交換機和消息隊列時,設置的屬性和消息產生端的php代碼設置的不一樣,導致不匹配和一直重寫屬性

      2.在調用時一直沒有確定到底是用basicConsume的消費模式還是basicGet消費模式(前者帶有監控效果,后者沒有,不知道是不是因為一者有跳出while循環,一者沒有的原因)托福改分

    posted on 2014-01-02 15:33 好不容易 閱讀(264) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    PK10開獎 PK10開獎
    主站蜘蛛池模板: a级片免费在线播放| 青青草国产免费国产是公开| 暖暖免费日本在线中文| 红杏亚洲影院一区二区三区 | 中文字幕亚洲精品| 久久免费看少妇高潮V片特黄| 中文字幕亚洲专区| 中文字幕无码免费久久9一区9 | 国产亚洲老熟女视频| 成年免费a级毛片| 亚洲中文久久精品无码ww16| CAOPORM国产精品视频免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产精品免费久久| 国产亚洲精品自在久久| 日韩电影免费观看| 亚洲视频一区在线观看| 成熟女人牲交片免费观看视频| 久久亚洲最大成人网4438 | 亚洲人成色7777在线观看不卡 | 看免费毛片天天看| 亚洲综合精品网站在线观看| 91免费国产视频| 久久亚洲AV成人无码国产| 一个人免费观看在线视频www| 亚洲精品无码成人| 亚洲人成影院在线观看| a级毛片高清免费视频| 亚洲人6666成人观看| 国产极品美女高潮抽搐免费网站| 一级一级一级毛片免费毛片| 亚洲成av人片天堂网| 99久久免费国产精品特黄| 国产精品成人亚洲| 亚洲AV日韩AV永久无码下载 | 免费一级毛片一级毛片aa| a视频在线免费观看| 亚洲依依成人精品| 亚洲精品色婷婷在线影院| 99ee6热久久免费精品6| 亚洲sm另类一区二区三区|