`
limingcai
  • 浏览: 112389 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

springBoot+RabbitMQ简单例子

阅读更多
  今天看了一下微服务的RabbitMQ 消息处理, 就写了一个例子,记录踩的坑 RabbitMQ安装就不介绍了,之前服务器安装过,
  
新建一个Spring Boot工程,命名为:“rabbitmq-hello”。
在pom.xml中引入如下依赖内容,其中spring-boot-starter-amqp用于支持RabbitMQ。
因为我建项目直接是官网建的,RabbitMQ依赖直接加上就OK,下载ZIP解压后导入工程,IDE里建也是一样。
直接上代码了,pom.xml依赖文件里 加入amqp依赖
<?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>SpringBootRabbitMQ</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>demo</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.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-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

在application.properties中配置关于RabbitMQ的连接和用户信息,用户可以回到上面的安装内容,在管理页面中创建用户。
spring.rabbitmq.host=192.168.11.12
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123456
安装rabbitmq的时候,这些消息写上
然后就是开始写类  一共五个类,一个springboot启动类,一个测试类,一个发送类,一个接收者类,一个配置消息类,
启动类
@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitMqHelloTest {

    @Autowired
    private Sender senders;

    @Test
    public void hello() throws Exception {
    senders.send();
    }
}

创建消息生产者Sender。通过注入AmqpTemplate接口的实例来实现消息的发送,AmqpTemplate接口定义了一套针对AMQP协议的基础操作。在Spring Boot中会根据配置来注入其具体实现。在该生产者,我们会产生一个字符串,并发送到名为hello_lmctest的队列中。
消息发送类,之前注入一直不成功,后台报空值,@Component这个之前没加上,注入类型这个是必须项,找了好一会儿原因
//消息发送者
@Component
public class Sender {

@Autowired
private AmqpTemplate amqpTemplate;
public void send(){
String context = "hello world lmc " + new Date();
        System.out.println("Sender : " + context);
this.amqpTemplate.convertAndSend("hello_lmctest",context);
}
}

然后是消息接收类了,也很简单,之前测试的时候,发送消息时,队列名称没写,直接发送消息,无法接收请求,都是太大意了, 其实都简单
创建消息消费者Receiver。通过@RabbitListener注解定义该类对hello队列的监听,并用@RabbitHandler注解来指定对消息的处理方法。所以,该消费者实现了对hello队列的消费,消费操作为输出消息的字符串内容。
//消息接收者
@Component
@RabbitListener(queues="hello_lmctest")
public class HelloReceiver {

@RabbitHandler
public void process(String str){
System.out.println("Receiver  "+str);
}
}

创建RabbitMQ的配置类RabbitConfig,用来配置队列、交换器、路由等高级信息。这里我们以入门为主,先以最小化的配置来定义,以完成一个基本的生产和消费过程。
配置类比较简单,生成一个队列,这个队列就是发送者和接收者都 需要对应的,监听队列
@Configuration
public class RabbitConfig {

@Bean
public Queue helloQueue(){
  return new Queue("hello_lmctest");
}
}

最后在 RabbitMQ 服务器端可以 访问RabbitMQ UI界面,查得到queues 创建的hello_lmctest队列名

启动应用主类,从控制台中,我们看到如下内容,程序创建了一个访问127.0.0.1:5672中springcloud的连接。
[cTaskExecutor-1] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#7b94089b:0/SimpleConnection@2145fe53
消息没有复制全,后面跟关IP 还有一些信息

再运行单元测试类,我们可以看到控制台中输出下面的内容,消息被发送到了RabbitMQ Server的hello_lmctest队列中。

Sender : hello world lmc Thu May 24 14:04:49 CST 2018

切换到应用主类的控制台,我们可以看到类似如下输出,消费者对hello_lmctest队列的监听程序执行了,并输出了接受到的消息信息。
Receiver  hello world lmc Thu May 24 14:04:49 CST 2018

这是简单应用,然而在实际应用中,我们还有很多内容没有演示 有交换机,路由健,模板等更高级的使用方式,有时间再研究


测试发送对象消息的时候,对实体类必须 序列化,实现public class User implements Serializable 接口
    @Test
    public void hello() throws Exception {
    //消息发送对象类型,一定要序列化才行
    User user=new User();
    user.setId("1243");
    user.setName("lmc");
    System.out.println("user");
    for(int i=0;i<6;i++){
    senderobj.send(user);
    }
    }
分享到:
评论

相关推荐

    springboot+websocket+idea.zip

    综上所述,这个项目提供了一个完整的Spring Boot应用,展示了如何使用WebSocket进行实时通信,包括单播、广播和多播三种模式,是学习和实践WebSocket在Spring Boot中应用的好例子。通过分析和运行这些源代码,开发者...

    采用最新版本SpringBoot2+MyBatis+Mysql+Apollo+Redis+Rabbitmq集成例子

    在本集成例子中,我们探讨的是一个基于最新版本SpringBoot2、MyBatis、Mysql、Apollo、Redis和Rabbitmq构建的现代化Web应用程序。这个项目旨在展示如何将这些技术有效地整合在一起,以实现高效、可扩展且具有弹性的...

    SpringBoot-RabbitMQ生产者和消费者.7z

    在实际应用中,这些例子可以帮助开发者理解如何在SpringBoot中配置RabbitMQ,并实现不同类型的通信。例如,当系统需要批量处理任务时,可以使用RabbitMQ创建一个工作队列,生产者将任务消息放入队列,消费者按照自己...

    springBoot整合RabbitMQ案例

    SpringBoot整合RabbitMQ是一个常见的后端开发任务,它涉及到分布式消息传递和Java应用程序的集成。RabbitMQ是一个开源的消息代理和队列服务器,而SpringBoot是基于Spring框架的简化版,提供了快速构建应用程序的方式...

    springboot集成rabbitmq的简单使用

    springboot集成rabbitmq的简单使用,介绍了springboot集成rabbitmq的使用,利用的交换机、队列、路由key来实现的例子

    SpringBoot集成Rabbitmq简单案例

    在压缩包`springBoot+rabbitmq`中,可能包含了上述代码的示例项目,你可以下载并运行它,以便更好地理解和实践这个简单的Spring Boot与RabbitMQ集成案例。通过这种方式,你可以快速上手并掌握Spring Boot中RabbitMQ...

    后台springBoot+jdbc例子

    SpringBoot是Spring框架的一种简化开发方式,它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz等,使得开发者能够快速构建稳定、生产级别的应用。在这个"后台springBoot+jdbc例子"中,我们...

    springboot中rabbitmq使用demo

    在这个例子中,当`myExchange`接收到匹配`myRoutingKey`的消息时,消息会被路由到`myQueue`,进而被`receiveMessage`方法消费。 以上就是Spring Boot中集成和使用RabbitMQ的基本步骤。在实际应用中,你可能需要处理...

    springboot+webJSP maven项目例子.zip

    它集成了大量常用的第三方库配置,如 JDBC、MongoDB、RabbitMQ、Quartz 等,让开发者可以快速地创建出稳定且生产级别的 Java 应用。WebJSP 是在 SpringBoot 中实现 Web 功能的一种方式,通过 JSP(JavaServer Pages...

    springboot-rabbitmq.7z

    SpringBoot Rabbitmq 消息发送手动确认demo,通过实现RabbitTemplate.ConfirmCallback 的confirm方法来手动确认,通过controller类访问,写了queue模式,topic模式和广播模式的例子,可直接运行,有生产者和消费者,...

    rabbitmq springboot 例子

    总之,“rabbitmq springboot 例子”展示了如何在SpringBoot项目中集成和使用RabbitMQ,这涉及了消息队列的基本概念、SpringBoot的集成方式以及消息的生产和消费。理解并掌握这些知识点,对于构建分布式、高并发的...

    SpringBoot与rabbitmq的结合的示例

    主要介绍了SpringBoot与rabbitmq的结合的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SpringBoot简单集成RabbitMq

    在本文中,我们将深入探讨如何将RabbitMQ与Spring Boot进行简单集成,以便在Java应用程序中实现消息队列的功能。Spring Boot以其简化配置和快速启动的特性,为开发者提供了便捷的方式来构建微服务应用。而RabbitMQ...

    springboot整合rabbitmq合集(xml方式和注解方式)

    SpringBoot 整合 RabbitMQ 的过程可以通过 XML 配置或者注解方式进行,这两种方式都是为了实现消息队列的高效管理。RabbitMQ 是一个流行的开源消息代理和队列服务器,常用于分布式系统中的异步任务处理和解耦。 ...

    SpringBoot Mybatis 入门 小例子

    【SpringBoot Mybatis 入门小例子】 SpringBoot与Mybatis的结合是现代Java开发中的常见选择,它们为快速构建微服务提供了强大的支持。SpringBoot简化了Spring的应用配置,而Mybatis则是一个轻量级的持久层框架,...

    SpringBoot工程简单例子

    **SpringBoot工程简单例子** SpringBoot是由Pivotal团队提供的全新框架,其设计目标是用来简化新Spring应用的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz ...

    rabbitmqdeep:这是springboot整合rabbitmq的几个消费模型

    在IT行业中,消息队列(Message Queue)是一种重要的中间件技术,用于解耦应用程序和处理异步通信。...通过实践这些例子,你将更好地掌握如何利用RabbitMQ进行消息传递和处理,以及如何根据需求选择合适的消费模型。

    spring-boot-mybatis-plus.zip

    它集成了大量的常用第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者可以快速地创建出生产级别的基于 Spring 平台的应用。 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及...

    【学习资源】rabbitmq实例代码

    1. `rabbitmqTest`:这个可能是一个简单的RabbitMQ客户端测试应用,它可能包含创建连接、发布消息、接收消息和断开连接等基本操作。在学习这个例子时,你可以了解到如何配置RabbitMQ的连接参数,创建生产者和消费者...

Global site tag (gtag.js) - Google Analytics