abbitMQ整合Spring Booot【點對點模式】


pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.toov5</groupId>
  <artifactId>rabbitmq</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  	<dependencies>
		<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>3.6.5</version>
		</dependency>
	</dependencies>
  
</project>

 創建連接的工具類:

package com.toov5.utils;

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

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
 
//沒有做成單例的  VirtualHost 需要復用
public class MQConnectionUtils {
    //創建新的連接
    public static Connection newConnection() throws IOException, TimeoutException {
         //創建連接工廠
    ConnectionFactory factory= new ConnectionFactory();
    //鏈接地址
    factory.setHost("192.168.91.6");
    //用戶名稱
    factory.setUsername("admin");
    //用戶密碼
    factory.setPassword("admin");
    //amqp端口號
    factory.setPort(5672);
    //連接virtualhost
    factory.setVirtualHost("/admin_toov5");
    Connection connection = factory.newConnection();
        return connection;
    }
    
    
}

Producer類

package com.toov5.Producer;

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

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.toov5.utils.MQConnectionUtils;

public class Producer {
    //隊列名稱
    private static final String UEUE_NAME = "test_queue";
    
    public static void main(String[] args) throws IOException, TimeoutException {
        //創建新的連接
    Connection connection = MQConnectionUtils.newConnection();
       //創建Channel
        Channel channel = connection.createChannel();
        //創建隊列
        channel.queueDeclare(UEUE_NAME, false, false, false, null);
        //創建message
        String msg = "toov5_message";
        System.out.println("生產者投遞消息"+msg);
        //生產者發送消息
        channel.basicPublish("",UEUE_NAME, null, msg.getBytes());
        //關閉通道和連接
         channel.close();
         connection.close();
    }
}

 

運行結果,看下這個隊列

模擬get message

 

 

consumer跟 producer基本類似

package com.toov5.Consumer;

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

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties;
import com.toov5.utils.MQConnectionUtils;

public class Consumer {
  
     //隊列名稱
        private static final String QUEUE_NAME = "test_queue";
        
        public static void main(String[] args) throws IOException, TimeoutException {
            System.out.println("消費者啟動..........");
            //創建新的連接
        Connection connection = MQConnectionUtils.newConnection();
           //創建Channel
            Channel channel = connection.createChannel();
            // 消費者關聯隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            
              DefaultConsumer defaultConsumerr = new DefaultConsumer(channel) {
                  //監聽獲取消息
                    @Override
                    public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
                            byte[] body) throws IOException {
                        String msg =new String(body,"UTF-8");
                        System.out.println("消費者獲取生產者消息:"+msg);
                    }
              };
            //牽手模式設置  默認自動應答模式  true:自動應答模式  
              channel.basicConsume(QUEUE_NAME, true, defaultConsumerr);              
              
//            //關閉通道和連接
//             channel.close();
//             connection.close();
        }
}

運行后的結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM