SpringBoot整合rabbitmq


 

上一篇文章有介紹rabbitmq的簡單實用,是通過一個簡單的java類來實現的。如果用的是springboot項目,那么我們使用rabbitmq就更簡單了,因為springboot有提供對rabbitmq的接口操作。

 

那么這篇文章介紹通過springboot實現rabbitmq的HelloWorld示例

 

springboot集成RabbitMQ簡單使用:

 

1.新建一個springboot項目,名為task-mq

2.在pom.xml中引入依賴:

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

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

 

  3.在application.properties中配置關於RabbitMQ的連接和用戶信息

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

  注意:配置文件的格式是key=value,這些key是默認的,如果寫錯了,就會報錯說連接失敗,我也就是將key寫錯,折騰了很長時間。  

spring-boot:約定大於配置。
只要classpath下有某功能對應的jar包, 同時在配置文件中又有該功能的配置,那么就可以使用該功能(該功能就被激活)

 

  4.配置類:

/**
 * 創建配置類:
 * 	用來配置隊列、交換器、路由等高級信息
 * 2018-3-19 10:17:29
 */
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Config {
	
//	public static final String QUEUE_NAME = "task-queue mytest 2018-3-21";
	public static final String QUEUE_NAME = "task-queue mytest 2018-3-22";
	
	@Bean(name="taskQueue")
	public Queue queue() {
		return new Queue(Config.QUEUE_NAME);
	}
}

 

 5.創建生產者:

  通過注入AmqpTemplate接口的實例來實現消息的發送,AmqpTemplate接口定義了一套針對AMQP協議的基礎操作

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 生產者發送消息
 *
 */
@Component
public class Sender {
	
	@Autowired
	private AmqpTemplate rabbitTemplate;
	
	@Resource(name="taskQueue") //注入name="taskQueue"的Queue
	private Queue queue; 
	
	
	@PostConstruct
	public void test1() {
		this.send();
	}
	
	public void send () {
		
		// 發送對象類型的消息
		Event event = new Event(); //實現Serializable接口
		event.setId(1101);
		event.setName("printscreen event");
		event.setCreateTimestamp(System.currentTimeMillis());
		event.setUpdateTimestamp(System.currentTimeMillis());
		
		System.out.println(queue.getName());
		rabbitTemplate.convertAndSend(queue.getName(), event); // 隊列名稱,消息
	}
	
}

  

 6.創建消費者:

  通過@RabbitListener注解定義該類對Config.QUEUE_NAME 隊列的監聽,並用@RabbitHandler注解來指定對消息的處理方法

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

/**
 * 接收者
 * 2018-3-17 23:18:04
 *
 */
@Component
public class Receiver {
	
	@RabbitListener(queues = Config.QUEUE_NAME) // //監聽器監聽指定的Queue
	public void receive(String msg) {
		System.out.println("receiver: " + msg);
	}
}

  

7.啟動springboot主類,進行測試

 

參考鏈接:

http://blog.didispace.com/spring-boot-rabbitmq/

http://www.ityouknow.com/springboot/2016/11/30/springboot(%E5%85%AB)-RabbitMQ%E8%AF%A6%E8%A7%A3.html

 


免責聲明!

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



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