[RabbitMQ]创建Java开发环境_消费者_生产者
生活随笔
收集整理的這篇文章主要介紹了
[RabbitMQ]创建Java开发环境_消费者_生产者
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們將用 Java 編寫兩個程序。發送單個消息的生產者和接收消息并打印出來的消費者。我們將介紹 Java API 中的一些細節。
在下圖中,“ P”是我們的生產者,“ C”是我們的消費者。中間的框是一個隊列-RabbitMQ 代表使用者保留的消息緩沖區
引入依賴
<!--rabbitmq 依賴客戶端--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency><!--操作文件流的一個依賴--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>消息生產者
package com.atguigu.one;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;import java.io.IOException; import java.util.concurrent.TimeoutException;public class Producer {//隊列名稱public static final String QUEUE_NAME = "hello";//發消息public static void main(String[] args) throws IOException, TimeoutException {//創建一個連接工廠ConnectionFactory factory = new ConnectionFactory();//工廠IP 連接RabbitMQ的隊列factory.setHost("192.168.111.134");//用戶名factory.setUsername("admin");//密碼factory.setPassword("123");//創建連接Connection connection = factory.newConnection();//獲取信道Channel channel = connection.createChannel();/*** 生成一個隊列* 1.隊列名稱* 2.隊列里面的消息是否持久化(磁盤) 默認情況消息存儲在內存中* 3.該隊列是否只供一個消費者進行消費 是否進行消費共享,false可以多個消費者消費 true:只能一個消費者消費* 4.是否自動刪除 最后一個消費者端開連接以后 該隊列是否自動刪除 true自動刪除 false不自動刪除* 5.其他參數*/channel.queueDeclare(QUEUE_NAME,false,false,false,null);//發消息String message = "hello world";/**** 發送一個消息* 1.發送到哪個交換機* 2.路由的Key值是哪個 本次是隊列的名稱* 3.其他參數信息* 4.發送消息的消息體*/channel.basicPublish("",QUEUE_NAME,null,message.getBytes());System.out.println("消息發送完畢");}}消息消費者
package com.atguigu.one;import com.rabbitmq.client.*;import java.io.IOException; import java.util.concurrent.TimeoutException;public class Consumer {//隊列的名稱public static final String QUEUE_NAME = "hello";//接收消息public static void main(String[] args) throws IOException, TimeoutException {//創建連接工廠ConnectionFactory factory = new ConnectionFactory();factory.setHost("192.168.111.134");factory.setUsername("admin");factory.setPassword("123");Connection connection = factory.newConnection();Channel channel = connection.createChannel();//聲明DeliverCallback deliverCallback = (consumerTag,message)->{System.out.println(new String (message.getBody()));};//取消消息時的回調CancelCallback cancelCallback = consumerTag ->{System.out.println("消息消費被中斷");};/*** 消費者消費消息* 1.消費哪個隊列* 2.消費成功之后是否要自動應答 true 代表的自動應答 false 代表手動應答* 3.當消息傳達到后(成功之后)的回調* 4.消費者取消消費的回調*/channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);}}測試
總結
以上是生活随笔為你收集整理的[RabbitMQ]创建Java开发环境_消费者_生产者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [RabbitMQ]工作原理_原理名词解
- 下一篇: 胰腺肿瘤能治好吗