RabbitMQ系列之五 SpringBoot RabbitMQ整合 - Go语言中文社区

RabbitMQ系列之五 SpringBoot RabbitMQ整合


项目git地址:https://github.com/gitcaiqing/SpringBootRabbitMQ
1.项目结构
在这里插入图片描述
2.创建SpringBoot项目并引入RabbitMQ
在这里插入图片描述
在这里插入图片描述
3.项目pom.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<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.sc</groupId>
	<artifactId>SpringBootRabbitMQ</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>SpringBootRabbitMQ</name>
	
	<description>Demo project for Spring Boot RabbitMQ</description>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.17.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-web</artifactId>
			<version>1.2.4</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

4.申明交换机、队列、队列绑定等

package com.sc;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class SpringBootRabbitMqApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootRabbitMqApplication.class, args);
	}
	
	private static final String exchangeName = "SpringbootRabbitMQ-Topics-Exchange";
	private static final String queueName = "SpringbootRabbitMQ-Topics-Queue";
	
	//声明交换机
	@Bean
	TopicExchange exchange(){
		return new TopicExchange(exchangeName, true, false);
	}
	
	//声明队列
	@Bean
	Queue queue() {
		return new Queue(queueName, true);
	}
	
	//队列绑定
	@Bean
	Binding binding(Queue queue, TopicExchange exchange) {
		//绑定队列到交换机并指定routingKey
		return BindingBuilder.bind(queue).to(exchange).with("topic.#");
	}
}

5.生产者

package com.sc.producter;

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

@Component
public class TopicsProducter {
	
	private static final String exchangeName = "SpringbootRabbitMQ-Topics-Exchange";
	
	@Autowired
	private AmqpTemplate amqpTemplate;
	
	public void send(String message) {
		this.amqpTemplate.convertAndSend(exchangeName, "topic.message", message);;
	}
}

6.消费者

package com.sc.consumer;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@RabbitListener(queues="SpringbootRabbitMQ-Topics-Queue")
@Component
public class TopicsConsumer {
	
	@RabbitHandler
	public void receive(String msg) {
		System.out.println("消费者消费消息:"+msg);
	}
}

7.测试

package com.sc.controller;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.sc.producter.TopicsProducter;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class TopicsControllerTest {

	@Autowired
	private TopicsProducter topicsProducter;
	
	@Test
	public void testTopicsTest() {
		String msg = "SpringBoot-RabbitMQ Topics Hello !";
		topicsProducter.send(msg);
	}
}
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/caiqing116/article/details/84097126
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:46:41
  • 阅读 ( 1295 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢