`
java最爱
  • 浏览: 6262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从零创建 Springboot RabbitMQ

 
阅读更多

本文使用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三种模式demo

    在本文中,我们将深入探讨如何在SpringBoot应用中使用RabbitMQ实现Direct、Topic和Fanout这三种消息队列模式。RabbitMQ是一款强大的开源消息代理和队列服务器,广泛应用于分布式系统中的异步处理和解耦。SpringBoot...

    rabbitmq基础+springboot集成rabbitmq

    它们可以从RabbitMQ中获取并处理消息。 3. **交换器**:交换器负责根据特定的路由规则将消息分发到对应的队列。RabbitMQ预定义了几种交换器类型,如Direct(直接)、Fanout(广播)、Topic(主题)和Header(头)。 ...

    RabbitMQ (二)结合springboot实现消息重试.pdf

    可以利用Spring Boot的`@RabbitListener`和`@Retryable`注解,结合`@Recover`方法来创建更为灵活的错误处理和重试策略。这样可以对消费异常进行更细致的控制,并防止因异常消费导致的系统资源浪费和潜在的服务中断。...

    从零学习SpringBoot视频全教程

    在学习这个视频教程时,你将逐步了解如何创建第一个SpringBoot项目,设置开发环境,理解自动配置机制,使用Spring Data访问数据库,实现RESTful API,以及如何集成第三方服务如Redis、RabbitMQ等。此外,教程可能还...

    springboot整合rabbitmq

    **SpringBoot整合RabbitMQ详解** 在现代微服务架构中,消息队列(Message Queue)如RabbitMQ扮演着至关重要的角色,它提供异步处理、解耦组件以及提高系统可扩展性。Spring Boot框架与RabbitMQ的整合使得开发者能够...

    springboot

    对于初学者来说,理解SpringBoot的基础概念和核心特性是非常重要的,这包括如何创建SpringBoot项目、配置自动配置、使用内嵌容器、编写RESTful服务以及集成数据库。同时,学习如何调试和测试SpringBoot应用,以及...

    SpringBoot中文版+SpringBoot英文版

    2. 零配置:SpringBoot默认配置了很多常见功能,比如数据源、日志、缓存等,大大减少了XML配置。 3. 自动配置:SpringBoot通过扫描类路径中的`@ConfigurationProperties`注解,自动将属性文件中的值绑定到Java对象上...

    springboot-integrate-rabbitmq:springboot-集成-rabbitmq

    本项目"springboot-integrate-rabbitmq"正是关于如何将Spring Boot与RabbitMQ集成的实践示例。 首先,我们要理解Spring Boot集成RabbitMQ的基本步骤。这通常包括以下部分: 1. **依赖添加**:在Spring Boot项目中...

    25、SpringBoot入门及原理.pdf

    同时,它也集成了大量常用的第三方库配置,例如Redis、MongoDB、Jpa、RabbitMQ、Quartz等,几乎可以零配置的开箱即用。 SpringBoot的优点包括: * 快速入门,提供了开箱即用的体验 * 简化项目配置,减少了冗余代码...

    SpringBoot总结

    SpringBoot可以方便地整合各种技术,如MongoDB、Redis、RabbitMQ等。只需添加相应依赖,SpringBoot会自动配置。 ### 10. 测试支持 `@SpringBootTest`注解用于启动整个SpringBoot应用进行集成测试,而`@WebMvcTest`...

    springboot+dubbo

    它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,开发者可以“零配置”地快速启动项目。 - **特性**:自动配置、内嵌 Servlet 容器(如 Tomcat)、提供起步依赖、健康检查、运行时...

    springboot教程项目代码

    它集成了大量常用的第三方库配置,如JDBC、MongoDB、RabbitMQ、Quartz等,让开发者可以“零配置”快速启动项目。本教程项目代码将帮助我们深入理解SpringBoot的核心特性及其实际应用。 首先,我们要了解SpringBoot...

    springboot demo

    它集成了大量常用的第三方库配置,如JPA、RabbitMQ、Quartz等,提供了自动配置的"starter"项目对象支持。SpringBoot的核心特性包括: 1. 自动配置:基于条件注解(@Conditional)和Java配置,Spring Boot能自动配置...

    Springboo整合RabbitMQ并测试五种模型

    路由键可以包含星号(*)和井号(#),它们分别代表一个单词和零个或多个单词。这对于创建基于多个关键字的订阅非常有用。 **测试模型** 为了测试这五种模型,我们需要编写生产者和消费者代码。在Spring Boot应用...

    springboot HelloWorld

    在SpringBoot HelloWorld项目中,我们通常会创建一个简单的主应用程序类,这个类会标记为@SpringBootApplication。这个注解是Spring Boot的核心注解,它整合了@ComponentScan、@EnableAutoConfiguration和@...

    SpringBoot

    它集成了大量常用的第三方库配置,如JPA、Thymeleaf、RabbitMQ、MongoDB等,使得开发者可以“零配置”快速启动项目。 在SpringBoot中,我们通常会使用Spring Data JPA来处理数据库操作,这正是`springbootjpademo`...

    springBoot简例

    它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,几乎可以“零配置”运行。 在描述中提到的"run执行Application.java即可",这表明项目的核心入口点是`Application.java`文件。这个类...

    SpringBoot详解.doc

    SpringBoot并非Spring框架的替代品,而是旨在简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如Redis、MongoDB、JPA、RabbitMQ、Quartz等,使得这些第三方库几乎可以零配置地开箱即用。...

    Springboot初学者项目demo(超实用)

    它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,让开发者可以“零配置”地启动项目,大大提升了开发效率。 Spring Boot 的核心特性包括自动配置、嵌入式服务器、运行时指标和健康检查等...

    基于springboot的教学辅助系统.zip

    - 创建SpringBoot项目:使用Spring Initializr初始化项目结构。 - 配置数据库连接:在application.properties或yaml文件中设置数据库连接信息。 - 定义实体类:对应数据库表结构,用注解标记字段和关系。 - 编写...

Global site tag (gtag.js) - Google Analytics