本文使用IDEA编辑器,首先打开编辑器,并新建maven项目springbootrmqp,这里直接点 NEXT 即可,然后填写groupid artifactid 创建项目完成后,在pom.xlm文件里做初始化Maven项目配置,并引入相关依赖
4.0.0
<groupId>cn.duanzx</groupId>
<artifactId>rabbitmq</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<argLine>-Dfile.encoding=UTF-8</argLine>
<java.version>1.8</java.version>
<maven.test.skip>true</maven.test.skip>
</properties>
<build>
<defaultGoal>clean install</defaultGoal>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
配置完成后在src/main/java包里创建初始化函数Application后,加上SpringBootApplication注解 此时运行Application Main函数会报错,因为Springboot默认会自动化允许数据源管理配置,如果找不到相关数据源配置文件的话会报错,解决如下
@SpringBootApplication
@ComponentScan(basePackages = {"rabbitmq.sample"})
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class ,HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) public class ApplicationSample {
public static void main(String[] args)throws InterruptedException {
SpringApplication.run(ApplicationSample.class, args);
}
} 取消数据源自动配置后,就可以自定义加入多个数据源了 以下是多数据源以及Springboot事物控制的配置:当前项目中并没有用到。
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@ImportResource(locations = {"classpath:conf/admin-data-source.xml"}) public class JpaConfiguration { @Bean("jpaProperties")
public Properties jpaProperties() { Properties jpaProperties = new Properties(); jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect"); jpaProperties.put("hibernate.show_sql", true); jpaProperties.put("hibernate.format_sql", false); // jpaProperties.put("hibernate.hbm2ddl.auto", false); jpaProperties.put("hibernate.jdbc.batch_size", 500); jpaProperties.put("hibernate.cache.use_second_level_cache", false); jpaProperties.put("hibernate.temp.use_jdbc_metadata_defaults", false); jpaProperties.put("hibernate.current_session_context_class", SpringSessionContext.class); return jpaProperties; }
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager", basePackages = {"admin.domain"})
public class CoreJpaConfiguration {
@Autowired @Qualifier("dataSource") private DataSource dataSource;
@Autowired @Qualifier("jpaProperties") private Properties jpaProperties;
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setJpaProperties(jpaProperties);
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
factoryBean.setJpaVendorAdapter(vendorAdapter);
factoryBean.setPackagesToScan("admin.domain");
return factoryBean;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
}
此时一个完整的Springboot项目就已经建立了,然后需要建立RabbitMQ访问 新创建application.yam文件,并添加如下内容,用户名和密码要在rabbitServer Web管理端创建,密码不要包含关键字如:admin等等 spring:
rabbitmq:
host: localhost
port: 5672
username: admin
password: 12345
然后创建发送消息类,接收消息类
@SpringBootApplication
@ComponentScan(basePackages = {"rabbitmq.normal"})
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class ,HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class}) public class ApplicationNormal {
public static String topicExchangeName = "spring-boot-exchange";
public static String queueName = "Spring-boot";
@Bean
Queue queue(){
return new Queue(queueName,false);
}
@Bean
TopicExchange exchange(){
return new TopicExchange(topicExchangeName);
}
@Bean
Binding binding(Queue queue,TopicExchange exchange){
return BindingBuilder.bind(queue).to(exchange).with("foo.bar.#");
}
@Bean
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter){
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
return container;
}
@Bean
MessageListenerAdapter listenerAdapter(Receiver receiver){
return new MessageListenerAdapter(receiver,"receiveMessage");
}
public static void main(String[] args)throws InterruptedException {
SpringApplication.run(ApplicationNormal.class, args).close();
}
} @Component public class Receiver { private CountDownLatch latch = new CountDownLatch(1);
public void receiveMessage(String message) {
System.out.println("Received <"+message+">");
latch.countDown();
}
public CountDownLatch getLatch(){
return latch;
}
} @Component public class Runner implements CommandLineRunner { private final RabbitTemplate rabbitTemplate;
private final Receiver receiver;
public Runner(Receiver receiver, RabbitTemplate rabbitTemplate) {
this.receiver = receiver;
this.rabbitTemplate = rabbitTemplate;
}
@Override
public void run(String... strings) throws Exception {
System.out.println("Sending message....................");
rabbitTemplate.convertAndSend(ApplicationNormal.topicExchangeName, "foo.bar.baz", "Hello from RabbitMQ!");
receiver.getLatch().await(10000, TimeUnit.MILLISECONDS);
}
}
此时运行ApplicationNormal后,即可在控制台看到发送消息的内容,然后在RabbitMQ Web管理页面就好看到对应的信息了
相关推荐
在本文中,我们将深入探讨如何在SpringBoot应用中使用RabbitMQ实现Direct、Topic和Fanout这三种消息队列模式。RabbitMQ是一款强大的开源消息代理和队列服务器,广泛应用于分布式系统中的异步处理和解耦。SpringBoot...
它们可以从RabbitMQ中获取并处理消息。 3. **交换器**:交换器负责根据特定的路由规则将消息分发到对应的队列。RabbitMQ预定义了几种交换器类型,如Direct(直接)、Fanout(广播)、Topic(主题)和Header(头)。 ...
可以利用Spring Boot的`@RabbitListener`和`@Retryable`注解,结合`@Recover`方法来创建更为灵活的错误处理和重试策略。这样可以对消费异常进行更细致的控制,并防止因异常消费导致的系统资源浪费和潜在的服务中断。...
在学习这个视频教程时,你将逐步了解如何创建第一个SpringBoot项目,设置开发环境,理解自动配置机制,使用Spring Data访问数据库,实现RESTful API,以及如何集成第三方服务如Redis、RabbitMQ等。此外,教程可能还...
**SpringBoot整合RabbitMQ详解** 在现代微服务架构中,消息队列(Message Queue)如RabbitMQ扮演着至关重要的角色,它提供异步处理、解耦组件以及提高系统可扩展性。Spring Boot框架与RabbitMQ的整合使得开发者能够...
对于初学者来说,理解SpringBoot的基础概念和核心特性是非常重要的,这包括如何创建SpringBoot项目、配置自动配置、使用内嵌容器、编写RESTful服务以及集成数据库。同时,学习如何调试和测试SpringBoot应用,以及...
2. 零配置:SpringBoot默认配置了很多常见功能,比如数据源、日志、缓存等,大大减少了XML配置。 3. 自动配置:SpringBoot通过扫描类路径中的`@ConfigurationProperties`注解,自动将属性文件中的值绑定到Java对象上...
本项目"springboot-integrate-rabbitmq"正是关于如何将Spring Boot与RabbitMQ集成的实践示例。 首先,我们要理解Spring Boot集成RabbitMQ的基本步骤。这通常包括以下部分: 1. **依赖添加**:在Spring Boot项目中...
同时,它也集成了大量常用的第三方库配置,例如Redis、MongoDB、Jpa、RabbitMQ、Quartz等,几乎可以零配置的开箱即用。 SpringBoot的优点包括: * 快速入门,提供了开箱即用的体验 * 简化项目配置,减少了冗余代码...
SpringBoot可以方便地整合各种技术,如MongoDB、Redis、RabbitMQ等。只需添加相应依赖,SpringBoot会自动配置。 ### 10. 测试支持 `@SpringBootTest`注解用于启动整个SpringBoot应用进行集成测试,而`@WebMvcTest`...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,开发者可以“零配置”地快速启动项目。 - **特性**:自动配置、内嵌 Servlet 容器(如 Tomcat)、提供起步依赖、健康检查、运行时...
它集成了大量常用的第三方库配置,如JDBC、MongoDB、RabbitMQ、Quartz等,让开发者可以“零配置”快速启动项目。本教程项目代码将帮助我们深入理解SpringBoot的核心特性及其实际应用。 首先,我们要了解SpringBoot...
它集成了大量常用的第三方库配置,如JPA、RabbitMQ、Quartz等,提供了自动配置的"starter"项目对象支持。SpringBoot的核心特性包括: 1. 自动配置:基于条件注解(@Conditional)和Java配置,Spring Boot能自动配置...
路由键可以包含星号(*)和井号(#),它们分别代表一个单词和零个或多个单词。这对于创建基于多个关键字的订阅非常有用。 **测试模型** 为了测试这五种模型,我们需要编写生产者和消费者代码。在Spring Boot应用...
在SpringBoot HelloWorld项目中,我们通常会创建一个简单的主应用程序类,这个类会标记为@SpringBootApplication。这个注解是Spring Boot的核心注解,它整合了@ComponentScan、@EnableAutoConfiguration和@...
它集成了大量常用的第三方库配置,如JPA、Thymeleaf、RabbitMQ、MongoDB等,使得开发者可以“零配置”快速启动项目。 在SpringBoot中,我们通常会使用Spring Data JPA来处理数据库操作,这正是`springbootjpademo`...
它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,几乎可以“零配置”运行。 在描述中提到的"run执行Application.java即可",这表明项目的核心入口点是`Application.java`文件。这个类...
SpringBoot并非Spring框架的替代品,而是旨在简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如Redis、MongoDB、JPA、RabbitMQ、Quartz等,使得这些第三方库几乎可以零配置地开箱即用。...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,让开发者可以“零配置”地启动项目,大大提升了开发效率。 Spring Boot 的核心特性包括自动配置、嵌入式服务器、运行时指标和健康检查等...
- 创建SpringBoot项目:使用Spring Initializr初始化项目结构。 - 配置数据库连接:在application.properties或yaml文件中设置数据库连接信息。 - 定义实体类:对应数据库表结构,用注解标记字段和关系。 - 编写...