SpringBoot集成系列--RabbitMQ

文章目錄

  • 一、代碼
    • 1、添加依賴
    • 2、配置RabbitMQ連接
    • 3、RabbitMQ配置
    • 4、創建生產者
    • 5、創建消費者
    • 6、測試
  • 二、遇到的問題
    • 1、Channel shutdown
    • 2、收不到信息
    • 3、安裝RabbitMQ,無法訪問控制臺訪問

一、代碼

1、添加依賴

在pom.xml文件中添加RabbitMQ的相關依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、配置RabbitMQ連接

在application.properties文件中配置RabbitMQ的連接信息

spring.rabbitmq.host=your-rabbitmq-host
spring.rabbitmq.port=your-rabbitmq-port
spring.rabbitmq.username=your-rabbitmq-username
spring.rabbitmq.password=your-rabbitmq-password

其中,spring.rabbitmq.host和spring.rabbitmq.port是RabbitMQ服務器的地址和端口號,默認端口號為5672;spring.rabbitmq.username和spring.rabbitmq.password是登錄RabbitMQ的用戶名和密碼,首次安裝,默認賬號和密碼都為guest。

3、RabbitMQ配置

注:導入的包是org.springframework.amqp下面的
啟動時,自動幫我們創建好Queue和Exchange,進行綁定

@Configuration
public class RabbitMQConfig {@Autowiredprivate ConnectionFactory connectionFactory;@Beanpublic RabbitAdmin rabbitAdmin() {return new RabbitAdmin(connectionFactory);}@Beanpublic Queue queue() {Queue queue = new Queue("forlan-queue");rabbitAdmin().declareQueue(queue);return queue;}@Beanpublic DirectExchange exchange() {DirectExchange exchange = new DirectExchange("forlan-exchange");rabbitAdmin().declareExchange(exchange);return exchange;}@Beanpublic Binding binding() {return BindingBuilder.bind(queue()).to(exchange()).with("forlan-routing-key");}
}

4、創建生產者

@Component
public class RabbitMQProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;public void testSend(){rabbitTemplate.convertAndSend("forlan-exchange", "forlan-routing-key", "測試發送RabbitMQ");}
}

其中,RabbitTemplate是Spring AMQP庫提供的一個類,用于操作RabbitMQ隊列;convertAndSend方法用于將消息對象轉換成RabbitMQ的消息格式,并通過指定的交換機和路由鍵將消息發送到指定的隊列中,在這里,我們使用了"forlan-exchange和"forlan-routing-key"作為交換機和路由鍵的名稱。

5、創建消費者

@Component
public class RabbitMQConsumer {@RabbitListener(queues = "forlan-queue")public void handleMessage(String message) {System.out.println("RabbitMQConsumer收到消息:" + message);}
}

@RabbitListener 是Spring框架為簡化RabbitMQ消息監聽而提供的一個注解。通過在方法上添加此注解,Spring會將該方法注冊為一個消息監聽器,當RabbitMQ隊列中有消息到達時,會自動調用該方法進行處理。也就是當RabbitMQ中的 “forlan-queue” 隊列中有新的消息到達時,就會自動調用 handleMessage 方法進行處理。

6、測試

@Autowired
private RabbitMQProducer rabbitMQProducer;
@Test
public void send() {rabbitMQProducer.testSend("Forlan測試發送RabbitMQ消息");
}

消費者成功收到信息
在這里插入圖片描述

二、遇到的問題

1、Channel shutdown

Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'forlan-exchange' in vhost '/', class-id=60, method-id=40)

不存在的,不會自動幫你創建,你可以在RabbitMQ后臺創建,也可以在代碼中設置不存在時創建,項目中就是采取在代碼中自動創建了

2、收不到信息

因為RabbitMQConsumer沒有注入到容器中,記得加上@Component,如下:

@Component
public class RabbitMQConsumer {...
}

3、安裝RabbitMQ,無法訪問控制臺訪問

需要開放控制臺遠程登錄權限,在安裝的目錄/etc/rabbitmq下配置好rabbitmq.config,內容如下:

[{rabbit,[{loopback_users,[]}]}].

注:記得配置不要有多余的標點符號,不然會出現Failed to start RabbitMQ broker.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214706.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214706.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp flex:1不生效

包裹view頂層 不能添加 display: flex;<template><view class"container"><tHeader :title"采購管理" :showScrollTar"true" :scroll"scroll" :tabList"tabList" :isFixed"true"change"chang…

<軟考高項備考>《論文專題 - 2 項目選材》

1 AI輔助寫作 AI技術輔助論文寫作包括&#xff1a; 1、百度-文心一言 2、阿里-千義通問 3、科大訊飛-星火認知大模型 4、騰訊-混元大模型 5、ChatGPT 可以輔助論文的選題&#xff0c;架構理論部分的思路&#xff0c;熟悉了解項目中的難點和痛點&#xff0c;拓寬論文的寫作思路…

跟我學c++高級篇——靜態反射實現之二函數接口實現

一、函數反射 在實際的編程中&#xff0c;類和結構體應用最多&#xff0c;但也最難。這里先分析函數反射&#xff0c;類和結構體放到后面在分析。函數是什么&#xff1f;其實在PC看來就是一個地址&#xff0c;在編譯順看來就是一個符號&#xff08;廢話啊&#xff09;。函數反…

Leetcode—228.匯總區間【簡單】

2023每日刷題&#xff08;五十六&#xff09; Leetcode—228.匯總區間 解題思路 我們可以用雙指針left 和 right找出每個區間的左右端點。 遍歷數組&#xff0c;當right 1< n 且 nums[right1]nums[right]1 時&#xff0c;指針right向右移動&#xff0c;否則區間 [left, …

Mysql8和Oracle實際項目中遞歸查詢樹形結構

背景&#xff1a; 項目升級&#xff0c;引入MySQL數據庫&#xff0c;之前一直用的是Oracle數據&#xff0c;在做用戶登錄單位維護的時候&#xff0c;需要返回該用戶所屬單位下的所有子單位。下邊是模擬項目數據實踐的過程。 數據準備&#xff1a; 準備一張單位表&#xff0c…

Flask存儲在內存中的密鑰被讀取

局限性&#xff1a;查找的密鑰具有特征碼 一、Flask環境源碼 1.Flask主文件main.py import os import uuid from flask import Flask, request, session, render_template from cat import catflag "" app Flask(__name__,static_url_path/,static_folderstatic …

51.Go操作kafka示例(kafka-go庫)

文章目錄 一、簡介二、生產者三、消費者 代碼地址&#xff1a;https://gitee.com/lymgoforIT/golang-trick/tree/master/31-kafka-go 一、簡介 之前已經介紹過一個操作kafka的go庫了&#xff0c;28.windows安裝kafka&#xff0c;Go操作kafka示例&#xff08;sarama庫&#xf…

二叉搜索樹的最近公共祖先【數據結構】

二叉搜索樹的最近公共祖先 題目描述 給定一棵二叉搜索樹的先序遍歷序列&#xff0c;要求你找出任意兩結點的最近公共祖先結點&#xff08;簡稱 LCA&#xff09;。 輸入 輸入的第一行給出兩個正整數&#xff1a;待查詢的結點對數 M&#xff08;≤ 1 000&#xff09;和二叉搜索…

基于JavaWeb+SpringBoot+Vue在線拍賣系統的設計和實現

基于JavaWebSpringBootVue在線拍賣系統系統的設計和實現 源碼獲取入口Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 Lun文目錄 摘 要 1 Abstract 1 1 系統概述 4 1.1 概述 4 1.2課題意義 4 1.3 主要內容 4 2 …

Git命令---綁定遠程倉庫

介紹 使用git命令綁定遠程倉庫 命令 git remote add origin https://gitee.com/x.xx.com/test.git

什么是多態

/*** Description 什么是多態*/ package com.oop;import com.oop.demo06.Person; import com.oop.demo06.Student;public class Application {public static void main(String[] args) {//一個對象的實際類型是確定的//new Student();//new Person();//可以指向的引用類型就不確…

C++新經典模板與泛型編程:策略技術中的算法策略

策略技術中的算法策略 在之前博客中funcsum()函數模板中&#xff0c;實現了對數組元素的求和運算。求和在這里可以看作一種算法&#xff0c;擴展一下思路&#xff0c;對數組元素求差、求乘積、求最大值和最小值等&#xff0c;都可以看作算法。而當前的funcsum()函數模板中&…

MySQL使用教程

數據構成了我們日益數字化的社會基礎。想象一下&#xff0c;從移動應用和銀行系統到搜索引擎&#xff0c;再到如 ChatGPT 這樣的先進人工智能聊天機器人&#xff0c;這些工具若沒有數據支撐&#xff0c;將寸步難行。你有沒有好奇過這些海量數據都存放在哪里呢&#xff1f;答案正…

2023年團體程序設計天梯賽——總決賽題

F-L1-1 最好的文檔 有一位軟件工程師說過一句很有道理的話&#xff1a;“Good code is its own best documentation.”&#xff08;好代碼本身就是最好的文檔&#xff09;。本題就請你直接在屏幕上輸出這句話。 輸入格式&#xff1a; 本題沒有輸入。 輸出格式&#xff1a; 在一…

讀excel文件,借助openpyxl工具

讀excel文件&#xff0c;借助openpyxl工具 import osimport requestsos.environ["http_proxy"] "http://127.0.0.1:7890" os.environ["https_proxy"] "http://127.0.0.1:7890"base_url "https://testnet.starscan.io/explore…

ALNS4VRPTWTF

文章概述 文章研究了城市物流背景下帶有第三方轉運設施的車輛路徑問題。與經典的車輛路徑問題不同&#xff0c;這些問題提供了將客戶需求交付給第三方轉運設施&#xff08;如城市集散中心&#xff09;的選擇&#xff0c;并收取一定的費用。為了解決這些挑戰&#xff0c;該研究…

LeetCode 279完全平方數 139單詞拆分 卡碼網 56攜帶礦石資源(多重背包) | 代碼隨想錄25期訓練營day45

動態規劃算法6 LeetCode 279 完全平方數 2023.12.11 題目鏈接代碼隨想錄講解[鏈接] int numSquares(int n) {//1確定dp數組&#xff0c;其下標表示j的完全平方數的最少數量//3初始化&#xff0c;將dp[0]初始化為0&#xff0c;用于計算&#xff0c;其他值設為INT_MAX用于遞推…

物料分類帳概覽

原文地址&#xff1a;Overview: What is SAP Material Ledger? | SAP Blogs 物料分類賬是收集物料主數據存儲在物料主數據中的物料交易數據的工具。 物料分類帳使用此數據來計算價格以評估這些物料。 物料臺賬是實際成本核算的基礎。它允許以多種貨幣對材料庫存進行評估&am…

對象的生離死別

對象的生離死別 實驗介紹 在構建一個類時&#xff0c;一般情況下需要編寫構造函數、拷貝構造函數以及析構函數&#xff0c;這將直接影響程序的運行。而初始化列表是在調用構造函數時初始化參數的方式。 一個對象從實例化到銷毀的歷程&#xff1a; 知識點 內存分區構造函數exp…

java中什么是Spring Bean?

在Spring框架中&#xff0c;一個"Bean"是指由Spring IoC容器所管理的對象。這個對象可以是Java類的實例&#xff0c;也可以是引用其他對象的引用、集合或者是簡單類型。Spring Bean是應用中由IoC容器負責創建、裝配和管理的對象。 Spring中的Bean具有以下特征&#…