Java編寫簡易rabbitmq生產(chǎn)者與消費(fèi)者的代碼
一、前言
開發(fā)時(shí)經(jīng)常與其它系統(tǒng)用rabbitmq對(duì)接,當(dāng)需要自測(cè)時(shí),還是自己寫rabbitmq生產(chǎn)者、消費(fèi)者自測(cè)方便些。
下面總結(jié)下不用框架、使用java編寫簡易rabbitmq的方法。
二、代碼
1.導(dǎo)入jar包
(1)如果是maven,那就用
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.3.4</version> </dependency>
(2)如果沒用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è)定用戶名 connectionFactory .setUsername("myuser"); //設(shè)定密碼 connectionFactory .setPassword("mypass"); //設(shè)定虛擬機(jī) connectionFactory .setVirtualHost("my_host"); //從mq工具類獲取連接信息 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(); } }
說明:
(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è)定用戶名 connectionFactory .setUsername("myuser"); //設(shè)定密碼 connectionFactory .setPassword("mypass"); //設(shè)定虛擬機(jī) connectionFactory .setVirtualHost("my_host"); //從mq工具類獲取連接信息 Connection connection = connectionFactory.newConnection(); //獲取一個(gè)通道 Channel channel = connection.createChannel(); //監(jiān)聽該隊(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接收消息"); } }
說明:
(1)其中的配置,按照自己的rabbitmq配置更改
(2)消費(fèi)者配置了監(jiān)聽隊(duì)列
(3)消費(fèi)者啟動(dòng)后一直開啟,除非手動(dòng)關(guān)閉項(xiàng)目運(yùn)行
到此這篇關(guān)于Java編寫簡易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)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定2017-08-08淺談java多線程 join方法以及優(yōu)先級(jí)方法
下面小編就為大家?guī)硪黄獪\談java多線程 join方法以及優(yōu)先級(jí)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01SpringBoot訪問MongoDB數(shù)據(jù)庫的兩種方式
MongoDB是一種非關(guān)系型數(shù)據(jù)庫,通過文檔存儲(chǔ)數(shù)據(jù),適用于大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)訪問,這篇文章主要介紹了SpringBoot訪問MongoDB數(shù)據(jù)庫的兩種方式,感興趣想要詳細(xì)了解可以參考下文2023-05-05Java結(jié)構(gòu)型設(shè)計(jì)模式之橋接模式詳細(xì)講解
橋接,顧名思義,就是用來連接兩個(gè)部分,使得兩個(gè)部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實(shí)現(xiàn)部分分離解耦,使他們可以獨(dú)立的變化。本文通過示例詳細(xì)介紹了橋接模式的原理與使用,需要的可以參考一下2022-09-09Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析
Kotlin協(xié)程中的StateFlow和SharedFlow是響應(yīng)式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧2025-03-03