Java編寫(xiě)簡(jiǎn)易rabbitmq生產(chǎn)者與消費(fèi)者的代碼
一、前言
開(kāi)發(fā)時(shí)經(jīng)常與其它系統(tǒng)用rabbitmq對(duì)接,當(dāng)需要自測(cè)時(shí),還是自己寫(xiě)rabbitmq生產(chǎn)者、消費(fèi)者自測(cè)方便些。
下面總結(jié)下不用框架、使用java編寫(xiě)簡(jiǎn)易rabbitmq的方法。
二、代碼
1.導(dǎo)入jar包
(1)如果是maven,那就用
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.3.4</version> </dependency>
(2)如果沒(méi)用maven,那就找一個(gè)amqp-client-3.3.4.jar文件,然后引入項(xiàng)目
2.生產(chǎn)者代碼
package RABBIT_MQ;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class RabbitMQSender {
//交換機(jī)
private final static String exchange_name = "x.mySys.test";
//路由鍵
private final static String route_key = "topmess";
public static void main(String[] args) throws IOException, TimeoutException {
//定義一個(gè)鏈接工廠
ConnectionFactory connectionFactory = new ConnectionFactory();
//設(shè)置服務(wù)地址
connectionFactory .setHost("10.123.123.123");
//設(shè)定端口
connectionFactory .setPort(5673);
//設(shè)定用戶(hù)名
connectionFactory .setUsername("myuser");
//設(shè)定密碼
connectionFactory .setPassword("mypass");
//設(shè)定虛擬機(jī)
connectionFactory .setVirtualHost("my_host");
//從mq工具類(lèi)獲取連接信息
Connection connection = connectionFactory.newConnection();
//獲取一個(gè)通道
Channel channel = connection.createChannel();
String message = "Hello World!";
channel.basicPublish(exchange_name, route_key, null, message.getBytes());
System.out.println("運(yùn)行完畢,已發(fā)送消息【" + message + "】");
channel.close();
connection.close();
}
}說(shuō)明:
(1)其中的配置,按照自己的rabbitmq配置更改
(2)生產(chǎn)者配置了交換機(jī)名與路由鍵
3.消費(fèi)者代碼
package RABBIT_MQ;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
public class RabbitMQReceiver {
private static String queue_name="q.mySys.test";
public static void main(String[] args) throws IOException, TimeoutException {
//定義一個(gè)鏈接工廠
ConnectionFactory connectionFactory = new ConnectionFactory();
//設(shè)置服務(wù)地址
connectionFactory .setHost("10.123.123.123");
//設(shè)定端口
connectionFactory .setPort(5673);
//設(shè)定用戶(hù)名
connectionFactory .setUsername("myuser");
//設(shè)定密碼
connectionFactory .setPassword("mypass");
//設(shè)定虛擬機(jī)
connectionFactory .setVirtualHost("my_host");
//從mq工具類(lèi)獲取連接信息
Connection connection = connectionFactory.newConnection();
//獲取一個(gè)通道
Channel channel = connection.createChannel();
//監(jiān)聽(tīng)該隊(duì)列,false代表手動(dòng)確認(rèn)
channel.basicConsume(queue_name,false,new DefaultConsumer(channel){
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties basicProperties, byte[] body) throws IOException{
System.out.println("接收到的消息:"+ new String(body,"UTF-8"));
}
});
System.out.println("運(yùn)行完畢,等待mq接收消息");
}
}說(shuō)明:
(1)其中的配置,按照自己的rabbitmq配置更改
(2)消費(fèi)者配置了監(jiān)聽(tīng)隊(duì)列
(3)消費(fèi)者啟動(dòng)后一直開(kāi)啟,除非手動(dòng)關(guān)閉項(xiàng)目運(yùn)行
到此這篇關(guān)于Java編寫(xiě)簡(jiǎn)易rabbitmq生產(chǎn)者與消費(fèi)者的文章就介紹到這了,更多相關(guān)Java rabbitmq生產(chǎn)者與消費(fèi)者內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
談?wù)剬?duì)Java多態(tài)性的一點(diǎn)理解
多態(tài)就是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定2017-08-08
淺談java多線(xiàn)程 join方法以及優(yōu)先級(jí)方法
下面小編就為大家?guī)?lái)一篇淺談java多線(xiàn)程 join方法以及優(yōu)先級(jí)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
SpringBoot訪(fǎng)問(wèn)MongoDB數(shù)據(jù)庫(kù)的兩種方式
MongoDB是一種非關(guān)系型數(shù)據(jù)庫(kù),通過(guò)文檔存儲(chǔ)數(shù)據(jù),適用于大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)訪(fǎng)問(wèn),這篇文章主要介紹了SpringBoot訪(fǎng)問(wèn)MongoDB數(shù)據(jù)庫(kù)的兩種方式,感興趣想要詳細(xì)了解可以參考下文2023-05-05
Java結(jié)構(gòu)型設(shè)計(jì)模式之橋接模式詳細(xì)講解
橋接,顧名思義,就是用來(lái)連接兩個(gè)部分,使得兩個(gè)部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實(shí)現(xiàn)部分分離解耦,使他們可以獨(dú)立的變化。本文通過(guò)示例詳細(xì)介紹了橋接模式的原理與使用,需要的可以參考一下2022-09-09
Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析
Kotlin協(xié)程中的StateFlow和SharedFlow是響應(yīng)式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒(méi)有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧2025-03-03

