RabbitMQ-消費(fèi)消息-basicConsume

RabbitMQ-消費(fèi)消息

 Address[] addresses = new Address[] {new Address(IP_ADDRESS, PORT)};
        /**
         * 1.建立連接工廠
         */
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setUsername(USER_NAME);
        connectionFactory.setPassword(PASSWORD);
        /**
         * 網(wǎng)絡(luò)故障自動(dòng)連接恢復(fù)
         */
        connectionFactory.setAutomaticRecoveryEnabled(true);
        
        /**
         * 2.創(chuàng)建連接 和生產(chǎn)者有一點(diǎn)不同
         */
        Connection connection = connectionFactory.newConnection(addresses);
        
        /**
         * 3.創(chuàng)建信道
         */
        final Channel channel = connection.createChannel();
        
        /**
         * 4.設(shè)置客戶端最多接收示被ack的消息個(gè)數(shù)
         */
        channel.basicQos(64);
        
        
        
        Consumer consumer  =new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
                    throws IOException {
                System.out.println("接收消息 :   "+new String(body));
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
//消息確認(rèn)
                channel.basicAck(envelope.getDeliveryTag(), false);
            }
        };
        
        /**
         * 回調(diào)
         */
        channel.basicConsume(QUEUR_NAME, consumer);
        /**
         * 關(guān)閉資源
         */
        TimeUnit.SECONDS.sleep(5);
        channel.close();
        connection.close();

basicConsume方法

String basicConsume(String queue, Consumer callback) throws IOException;

 String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;

 String basicConsume(String queue, boolean autoAck, Map<String, Object> arguments, Consumer callback) throws IOException;


String basicConsume(String queue, boolean autoAck, String consumerTag, Consumer callback) throws IOException;

String basicConsume(String queue, boolean autoAck, String consumerTag, boolean noLocal, boolean exclusive, Map<String, Object> arguments, Consumer callback) throws IOException;
  • queue 隊(duì)列名
  • autoAck 是否自動(dòng)確認(rèn)消息,true自動(dòng)確認(rèn),false 不自動(dòng)要手動(dòng)調(diào)用,建立設(shè)置為false
//消息確認(rèn)
                channel.basicAck(envelope.getDeliveryTag(), false);
  • consumerTag 消費(fèi)者標(biāo)簽缓升,用來區(qū)分多個(gè)消費(fèi)者
  • noLocal 設(shè)置為true吠各,表示 不能將同一個(gè)Conenction中生產(chǎn)者發(fā)送的消息傳遞給這個(gè)Connection中 的消費(fèi)者
  • exclusive 是否排他
  • arguments 消費(fèi)者的參數(shù)
  • callback 消費(fèi)者 DefaultConsumer建立使用,重寫其中的方法
      @Override
            public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
  • 重寫的方法
@Override
    public void handleConsumeOk(String consumerTag) {
        this._consumerTag = consumerTag;
    }

  @Override
    public void handleCancelOk(String consumerTag) {
        // no work to do
    }

 @Override
    public void handleCancel(String consumerTag) throws IOException {
        // no work to do
    }

   @Override
    public void handleShutdownSignal(String consumerTag, ShutdownSignalException sig) {
        // no work to do
    }

  @Override
    public void handleRecoverOk(String consumerTag) {
        // no work to do
    }

  • handleShutdownSignal方法 當(dāng)Channel與Conenction關(guān)閉的時(shí)候會(huì)調(diào)用欠动,
  • handleCancelOk方法會(huì)在其它方法之前調(diào)用永乌,返回消費(fèi)者標(biāo)簽
    *handleCancelOk與handleCancel消費(fèi)者可以顯式或者隱式的取水訂單的時(shí)候調(diào)用惑申,也可以通過
    channel.basicCancel方法來顯式的取消一個(gè)消費(fèi)者訂閱
    會(huì)首先觸發(fā)handleConsumeOk方法,之后觸發(fā)handleDelivery方法翅雏,最后才觸發(fā)handleCancelOk方法

channel.basicAck();確認(rèn)消息

deliveryTag:該消息的index
multiple:是否批量.true:將一次性ack所有小于deliveryTag的消息圈驼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市望几,隨后出現(xiàn)的幾起案子绩脆,更是在濱河造成了極大的恐慌,老刑警劉巖橄抹,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靴迫,死亡現(xiàn)場離奇詭異,居然都是意外死亡楼誓,警方通過查閱死者的電腦和手機(jī)玉锌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慌随,“玉大人芬沉,你說我怎么就攤上這事「蟛拢” “怎么了丸逸?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剃袍。 經(jīng)常有香客問我黄刚,道長,這世上最難降的妖魔是什么民效? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任憔维,我火速辦了婚禮,結(jié)果婚禮上畏邢,老公的妹妹穿的比我還像新娘业扒。我一直安慰自己,他們只是感情好舒萎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布程储。 她就那樣靜靜地躺著,像睡著了一般臂寝。 火紅的嫁衣襯著肌膚如雪章鲤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天咆贬,我揣著相機(jī)與錄音败徊,去河邊找鬼。 笑死掏缎,一個(gè)胖子當(dāng)著我的面吹牛皱蹦,可吹牛的內(nèi)容都是我干的煤杀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼根欧,長吁一口氣:“原來是場噩夢啊……” “哼怜珍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凤粗,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎今豆,沒想到半個(gè)月后嫌拣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呆躲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年异逐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片插掂。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灰瞻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辅甥,到底是詐尸還是另有隱情酝润,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布璃弄,位于F島的核電站要销,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夏块。R本人自食惡果不足惜疏咐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脐供。 院中可真熱鬧浑塞,春花似錦、人聲如沸政己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匹颤。三九已至仅孩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間印蓖,已是汗流浹背辽慕。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赦肃,地道東北人溅蛉。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓公浪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親船侧。 傳聞我的和親對象是個(gè)殘疾皇子欠气,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)镜撩,斷路器孵构,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 本文章翻譯自http://www.rabbitmq.com/api-guide.html终吼,并沒有及時(shí)更新。 術(shù)語對...
    joyenlee閱讀 7,653評(píng)論 0 3
  • 來源 RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。支持消息的持久化望伦、事務(wù)皂甘、擁塞控...
    jiangmo閱讀 10,357評(píng)論 2 34
  • 這篇指南是關(guān)于java版RabbitMQ的客戶端接口廓握,而不是被分為好幾個(gè)章節(jié)的初級(jí)教程伴鳖。 在編譯和運(yùn)行期,5.x正...
    前山飯店閱讀 576評(píng)論 0 0
  • 蔡康永在有一期的奇葩說上提出過一個(gè)觀點(diǎn):生活本身就是一場接連一場的暴擊锯梁。 是的即碗。對任何人來說,活著陌凳,就要經(jīng)受各種暴擊剥懒。
    卷幃望月閱讀 192評(píng)論 0 0