1. 程式人生 > >spring boot實戰(第十一篇)初識RabbitMQ

spring boot實戰(第十一篇)初識RabbitMQ

package org.lkl.mq.rabbitmq.test;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;

/**
 * 客戶端01
 * 
 * @author liaokailin
 * @version $Id: Receive01.java, v 0.1 2015年11月01日 下午3:47:58 liaokailin Exp $
 */
public class Receive01 {
    public static void main(String[] args) throws IOException, TimeoutException, ShutdownSignalException,
                                          ConsumerCancelledException, InterruptedException {
        ConnectionFactory facotry = new ConnectionFactory();
        facotry.setUsername("test");
        facotry.setPassword("test");
        facotry.setVirtualHost("test");
        facotry.setHost("localhost");

        Connection conn = facotry.newConnection(); //獲取一個連結
        //通過Channel進行通訊
        Channel channel = conn.createChannel();
        int prefetchCount = 1;
        channel.basicQos(prefetchCount); //保證公平分發

        boolean durable = true;
        //宣告交換機
        channel.exchangeDeclare(Send.EXCHANGE_NAME, "direct", durable); //按照routingKey過濾
        //宣告佇列
        String queueName = channel.queueDeclare("queue-01", true, true, false, null).getQueue();
        //將佇列和交換機繫結
        String routingKey = "lkl-0";
        //佇列可以多次繫結,繫結不同的交換機或者路由key
        channel.queueBind(queueName, Send.EXCHANGE_NAME, routingKey);

        //建立消費者
        QueueingConsumer consumer = new QueueingConsumer(channel);
        
        //將消費者和佇列關聯
        channel.basicConsume(queueName, false, consumer); // 設定為false表面手動確認訊息消費

        //獲取訊息

        System.out.println(" Wait message ....");
        while (true) {
            Delivery delivery = consumer.nextDelivery();
            String msg = new String(delivery.getBody());
            String key = delivery.getEnvelope().getRoutingKey();

            System.out.println("  Received '" + key + "':'" + msg + "'");
            System.out.println(" Handle message");
            TimeUnit.SECONDS.sleep(3); //mock handle message
            channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); //確定該訊息已成功消費
        }

    }
}


相關推薦

spring boot實戰()初識RabbitMQ

package org.lkl.mq.rabbitmq.test; import java.io.IOException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import

spring boot實戰()整合RabbitMQ

this direct 還需要 添加屬性 創建 還需 topic start routing 前言 本篇主要講述Spring Boot與RabbitMQ的整合,內容非常簡單,純API的調用操作。 操作之間需要加入依賴Jar [html] view plain cop

spring boot實戰()整合RabbitMQ原始碼分析前言

public void afterPropertiesSet() { synchronized (this.lifecycleMonitor) { if (this.running || !this.autoStartup) { return; } if (this.con

Spring Cloud實戰 | Spring Cloud Gateway 閘道器實現對RESTful介面許可權控制和按鈕許可權控制

## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway

Spring Cloud實戰 | Spring Cloud Gateway閘道器實現對RESTful介面許可權和按鈕許可權細粒度控制

## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway

spring boot實戰()Spring boot Bean載入原始碼分析

public static void invokeBeanFactoryPostProcessors( ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostPro

Spring Boot之Scheduling Tasks定時任務

幾乎大部分的應用都會有定時執行任務的需求。使用Spring Boot的Scheduling Tasks能夠提高您的開發效率。這篇文章將介紹怎麼通過Spring Boot去做排程任務。 構建工程 建立一個Springboot工程,在它的程式入口加上@EnableScheduling

史上最簡單的SpringCloud教程 | : docker部署spring cloud項目

大數 imageview 建議 chapter 環境 多次 pan mas 存儲 Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare m

史上最簡單的SpringCloud教程 | : docker部署spring cloud專案

Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機器)、bare metal、OpenStack 叢集和其他的基礎應用平臺。 Docker通常用於如下場景:

spring boot 開發—修改tomcat容器上下文根地址

1、上下文跟預設地址 預設情況下springboot中request.getServletContext().getRealPath 返回的是一個臨時資料夾的地址 2、檢視原始碼 通過檢視原始碼 位置在org.springframework.boot.co

史上最簡單的SpringCloud教程 | : docker部署spring cloud專案

一、docker簡介 Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機器)、bare metal、OpenStack 叢集和其他的基礎應用平臺

spring boot實戰()上下文的建立

public static Set<BeanDefinitionHolder> registerAnnotationConfigProcessors( BeanDefinitionRegistry registry, Object source) { DefaultListableBe

我的博客---初識python網絡編程

put 表示 網絡層 inter 設備 應用層 地址 imp 提示符 初識python網絡編程 IP地址1、IP地址被用來給Internet上的電腦一個編號。大家日常見到的情況是每臺聯網的PC上都需要有IP地址,才能正常通信。我們可以把‘個人電腦’

跟我學SpringCloud | :使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤

SpringCloud系列教程 | 第十一篇:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如無特殊說明,本系列教程全採用以上版本 在分散式服務架構中,需要對分散

函式初識

函式初識 函式是一組操作的集合,並賦予它一個名字。你已經使用過許多 Python 內建的函式,例如 string.title() 和 list.sort() 。我們也可以定義自己的函式,它們可以“教導” Python 作一些新的行為 定義一個函式 使用關鍵字 def 告訴 Python 你將要定義一個函式。

Spring Cloud | 分散式配置中心高可用

​ 本文是Spring Cloud專欄的第十一篇文章,瞭解前十篇文章內容有助於更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用元件介紹概覽 Spring Cloud第二篇 | 使用並認識Eureka註冊中心 Spring Cloud第三篇 | 搭建高可用E

Spring Cloud實戰 | Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合實現微服務架構中逃不掉的話題分散式事務

Seata分散式事務線上體驗地址: [www.youlai.store](http://www.youlai.store) ![](https://i.loli.net/2021/01/14/ACcKBaGte5s7Wy9.png) 本篇完整原始碼地址:https://github.com/hxrui/y

Python開發【】:JavaScript

靜態函數 發生 編寫 小寫 nsh div 區分 所有 是個 JavaScript是一門編程語言,瀏覽器內置了JavaScript語言的解釋器,所以在瀏覽器上按照JavaScript語言的規則編寫相應代碼之,瀏覽器可以解釋並做出相應的處理。 一、如何編寫 1、JavaScr

數據結構——鏈隊列

數據 需要 長度 logs cnblogs next color back 判斷 鏈式存儲的隊列稱為鏈隊列。和鏈棧類似,用單鏈表來實現鏈隊,根據隊列的FIFO原則,為了操作上的方便,分別需要一個頭指針和尾指針。隊頭在鏈頭,隊尾在鏈尾。鏈式隊列在進隊時無隊滿問題,但有隊空問題

mongodb文章~mongodb的引擎解讀

分離 影響 支持 res 開啟 bsp true collect 狀態 一 簡介 WiredTiger引擎調優技 二 兩種引擎對比概念 從3.2.x開始,WiredTiger成為默認的存儲引擎。最為MongoDB目前最流行的存儲引擎,WiredTiger與原先的MMAP