项目代码构造
这里写图片描述

关注点在红框的代码。。。

代码
下面就把项目的代码展示下来

application.properties
配置文件

spring.application.name=rabbitmq-hello

# RabbitMQ
spring.rabbitmq.first.host=node9
spring.rabbitmq.first.port=5670
spring.rabbitmq.first.username=guest
spring.rabbitmq.first.password=guest

spring.rabbitmq.second.host=localhost
spring.rabbitmq.second.port=5672
spring.rabbitmq.second.username=guest
spring.rabbitmq.second.password=guest


# MySQL
spring.datasource.url = jdbc:mysql://localhost:3306/cloudtest
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver

HelloApplication.java
程序入口

package com.paas.springboot.demo01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {

public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}

}


RabbitConfig.java
RabbitMQ配置类

package com.paas.springboot.demo01;

import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

@Configuration
public class RabbitConfig {

@Bean(name="firstConnectionFactory")
@Primary
public ConnectionFactory firstConnectionFactory(
@Value("${spring.rabbitmq.first.host}") String host,
@Value("${spring.rabbitmq.first.port}") int port,
@Value("${spring.rabbitmq.first.username}") String username,
@Value("${spring.rabbitmq.first.password}") String password
){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}

@Bean(name="secondConnectionFactory")
public ConnectionFactory secondConnectionFactory(
@Value("${spring.rabbitmq.second.host}") String host,
@Value("${spring.rabbitmq.second.port}") int port,
@Value("${spring.rabbitmq.second.username}") String username,
@Value("${spring.rabbitmq.second.password}") String password
){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}

@Bean(name="firstRabbitTemplate")
@Primary
public RabbitTemplate firstRabbitTemplate(
@Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory
){
RabbitTemplate firstRabbitTemplate = new RabbitTemplate(connectionFactory);
return firstRabbitTemplate;
}

@Bean(name="secondRabbitTemplate")
public RabbitTemplate secondRabbitTemplate(
@Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory
){
RabbitTemplate secondRabbitTemplate = new RabbitTemplate(connectionFactory);
return secondRabbitTemplate;
}

@Bean(name="firstFactory")
public SimpleRabbitListenerContainerFactory firstFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}

@Bean(name="secondFactory")
public SimpleRabbitListenerContainerFactory secondFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}

@Bean
public Queue firstQueue() {
System.out.println("configuration firstQueue ........................");
return new Queue("hello1");
}

@Bean
public Object secondQueue() {
System.out.println("configuration secondQueue ........................");
return new Queue("hello2");
}
}

Receiver.java
RabbitMQ中的消费者,接收first RabbitMQ中的队列hello1的数据

package com.paas.springboot.demo01;

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

@Component
@RabbitListener(queues = "hello1", containerFactory="firstFactory")
public class Receiver {

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

}

Receiver2.java
RabbitMQ中的消费者,接收second RabbitMQ中的队列hello2的数据

package com.paas.springboot.demo01;

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

@Component
@RabbitListener(queues = "hello2", containerFactory="secondFactory" )
public class Receiver2 {

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

}

Sender.java
RabbitMQ中的生产者,发送消息到first RabbitMQ中的队列hello1和hello2

package com.paas.springboot.demo01;

import java.util.Date;
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

@Component
public class Sender {

@Resource(name="firstRabbitTemplate")
private RabbitTemplate firstRabbitTemplate;

public void send1() {
String context = "hello1 " + new Date();
System.out.println("Sender : " + context);
this.firstRabbitTemplate.convertAndSend("hello1", context);
}

public void send2() {
String context = "hello2 " + new Date();
System.out.println("Sender : " + context);
this.firstRabbitTemplate.convertAndSend("hello2", context);
}

}
1
Sender2.java
RabbitMQ中的生产者,发送消息到second RabbitMQ中的队列hello1和hello2

package com.paas.springboot.demo01;

import java.util.Date;
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

@Component
public class Sender {

@Resource(name="firstRabbitTemplate")
private RabbitTemplate firstRabbitTemplate;

public void send1() {
String context = "hello1 " + new Date();
System.out.println("Sender : " + context);
this.firstRabbitTemplate.convertAndSend("hello1", context);
}

public void send2() {
String context = "hello2 " + new Date();
System.out.println("Sender : " + context);
this.firstRabbitTemplate.convertAndSend("hello2", context);
}

}

TestDemo01.java
测试类,调用Sender发送消息

package com.paas.springboot.demo01;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = HelloApplication.class)
public class TestDemo01 {

@Autowired
private Sender sender;

@Autowired
private Sender2 sender2;

@Test
public void hello() throws Exception {
sender.send1();
sender.send2();
}

@Test
public void hello2() throws Exception {
sender2.send1();
sender2.send2();
}
}
1
pom.xml

http://lib.csdn.net/article/java/65386  原文出处

项目代码构造 这里写图片描述 关注点在红框的代码。。。 代码 下面就把项目的代码展示下来 application.properties 配置文件 spring.application.name=rabbitmq-hello # RabbitMQ spring.rabbitmq.first.host=node9 spring.rabbitmq.first.port=5670 s... web management: http://120.27.114.229:15672 你会使用 Spring AMQP的RabbitTemplate内置应用系统来发布 消息 和使用一个MessageListenerAdapter POJO来订阅 消息 git克隆 gradle boot Run 大约几十分钟 一款文本编辑器或者IDE 你也可以从这个项目中入门代码或者可以在入门 (个人非常喜欢的一件ecl ip se的IDE)中查看 RabbitMQ 服务器 像许多的 Spring 项目,你可以从头开始并完成每一步,或者你可以绕过你已经熟悉的一些步骤,无论是哪种步骤,你最终可以完成代码 从头开始的话,请去看内置 如果要绕过你熟悉的,按照以下合并: 并解压得到 代码或者从
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、 rabbitmq 、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块说明 - spring boot -basic - Spring Boot 基础知识,包括 Spring Boot 起步、 配置 详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - spring boot -data - Spring Boot 数据库操作,包括 Spring JDBC、JPA、Mybatis注解版 & XML版、MongoDB。其中,每个版本都有其对应的多数据 解决方案。 - spring boot -caches - Spring Boot 缓存,包括redis、ehcache、 spring -cache、memcached、使用redis实现session共享 等。 - spring boot -templates - Spring Boot 模板,包括thymeleaf、freemarker、jsp、表单校验 等。 - spring boot -docs - Spring Boot 文档生成工具,包括 Swagger、 Spring RestDocs - spring boot -bussiness - Spring Boot 业务应用,包括 定时任务、上传文件、 发送 邮件、Doc文档操作 等。 - spring boot -ajax - Spring Boot AJAX 跨域,包括 JSONP、Node.js与 Spring Boot 集成使用反向代理 等。 - spring boot -websockets - Spring Boot 使用 Websocket - spring boot -webflux - Spring Boot 集成 WebFlux 开发反应式 Web 应用 - spring boot -dubbo - Spring Boot 集成 Dubbo 的三种方式 - spring boot -search - Spring Boot 集成 搜索引擎,包括 elasticsearch、solr - spring boot -mq - Spring Boot 集成 消息 队列,包括 kafka、 rabbitmq 、activemq、rocketmq、redismq - spring boot -auth - Spring Boot 权限认证,包括 Apache Shiro、 Spring Security - spring boot -cloud - Spring Cloud 入门,包括 Eureka(服务注册与发现)、Config( 配置 中心)、Hystrix(断路器)、Bus( 消息 总线) 等
- chapter1:[基本项目构建(可作为工程脚手架),引入web模块,完成一个简单的RESTful API](http://blog.didispace.com/ spring - boot -learning-1/) - [使用Intellij中的 Spring Initializr来快速构建 Spring Boot /Cloud工程](http://blog.didispace.com/ spring -initializr-in-intellij/) ### 工程 配置 - chapter2-1-1:[ 配置 文件详解:自定义属性、随机数、多环境 配置 等](http://blog.didispace.com/ spring boot properties/) ### Web开发 - chapter3-1-1:[构建一个较为复杂的RESTful API以及单元测试](http://blog.didispace.com/ spring boot restfulapi/) - chapter3-1-2:[使用Thymeleaf模板引擎渲染web视图](http://blog.didispace.com/ spring boot web/) - chapter3-1-3:[使用Freemarker模板引擎渲染web视图](http://blog.didispace.com/ spring boot web/) - chapter3-1-4:[使用Velocity模板引擎渲染web视图](http://blog.didispace.com/ spring boot web/) - chapter3-1-5:[使用Swagger2构建RESTful API](http://blog.didispace.com/ spring boot swagger2/) - chapter3-1-6:[统一异常处理](http://blog.didispace.com/ spring boot exception/) ### 数据访问 - chapter3-2-1:[使用JdbcTemplate](http://blog.didispace.com/ spring boot data1/) - chapter3-2-2:[使用 Spring -data-jpa简化数据访问层(推荐)](http://blog.didispace.com/ spring boot data2/) - chapter3-2-3:[多数据 配置 (一):JdbcTemplate](http://blog.didispace.com/ spring boot multidatasource/) - chapter3-2-4:[多数据 配置 (二): Spring -data-jpa](http://blog.didispace.com/ spring boot multidatasource/) - chapter3-2-5:[使用NoSQL数据库(一):Redis](http://blog.didispace.com/ spring boot redis/) - chapter3-2-6:[使用NoSQL数据库(二):MongoDB](http://blog.didispace.com/ spring boot mongodb/) - chapter3-2-7:[整合MyBatis](http://blog.didispace.com/ spring boot mybatis/) - chapter3-2-8:[MyBatis注解 配置 详解](http://blog.didispace.com/mybatisinfo/) ### 事务管理 - chapter3-3-1:[使用事务管理](http://blog.didispace.com/ spring boot transactional/) - chapter3-3-2:[分布式事务(未完成)] ### 其他内容 - chapter4-1-1:[使用@Scheduled创建定时任务](http://blog.didispace.com/ spring boot scheduled/) - chapter4-1-2:[使用@Async实现异步调用](http://blog.didispace.com/ spring boot async/) #### 日志管理 - chapter4-2-1:[默认日志的 配置 ](http://blog.didispace.com/ spring boot log/) - chapter4-2-2:[使用log4j记录日志](http://blog.didispace.com/ spring boot log4j/) - chapter4-2-3:[对log4j进行多环境 不同 日志级别的控制](http://blog
spring - boot -helloWorld: spring - boot 的helloWorld版本 spring - boot -mybaits-annotation:注解版本 spring - boot -mybaits-xml:xml 配置 版本 spring - boot -mybatis-mulidatasource: spring boot +mybatis多数据 最简解决方案 spring - boot -mybatis-annotation-mulidatasource: spring boot +mybatis(注解版)多数据 最简解决方案 spring - boot -thymeleaf:simple spring boot thymeleaf demo spring - boot -jpa-thymeleaf-curd: spring boot + jpa + thymeleaf 增删改查示例 spring - boot - rabbitmq spring boot rabbitmq 各种 消息 应用案例 spring - boot -scheduler: spring boot 和定时任务案例 spring - boot -web:web开发综合使用案例 spring - boot -mail: spring boot 和邮件服务 spring - boot -mongodb: spring boot 和mongodb的使用 spring - boot -multi-mongodb: spring boot 和mongodb多数据 的使用 spring - boot -package-war: spring - boot 打包成war包示例 spring - boot -shiro: spring boot 整合shiro rbac示例
上一遍博客介绍了使用 spring - boot 连接单个 rabbitmq 服务器 发送 和接收 消息 ,但是在实际的项目中我们可能需要同时连接 多个 不同 rabbitmq 服务器 发送 和接收 消息 。今天简单介绍下如何使用 spring - boot 连个 多个 rabbitmq 服务器 发送 和接收 消息 。 1. 配置 文件中 配置 2个 rabbitmq 连接信息(这里我在2台虚拟机上安装 rabbitmq ) server: port: 8091 配置 rabbitmq 同步传输 @Bean AsyncRabbitTemplate asyncRabbitTemplate(RabbitTemplate rabbitTemplate){ return new AsyncRabbitTemplate(rabbitTemplate); 同步请求设置 首先注入T
spring - boot -helloWorld: spring - boot 的helloWorld版本 spring - boot -mybaits-annotation:注解版本 spring - boot -mybaits-xml:xml 配置 版本 spring - boot -mybatis-mulidatasource: spring boot +mybatis多数据 最简解决方案 spring - boot -mybatis-annotation-mulidatasource: spring boot +mybatis(注解版)多数据 最简解决方案 spring - boot -thymeleaf:simple spring boot thymeleaf demo spring - boot -jpa-thymeleaf-curd: spring boot + jpa + thymeleaf 增删改查示例 spring - boot - rabbitmq spring boot rabbitmq 各种 消息 应用案例 spring - boot -scheduler: spring boot 和定时任务案例 spring - boot -web:web开发综合使用案例 spring - boot -mail: spring boot 和邮件服务 spring - boot -mongodb: spring boot 和mongodb的使用 spring - boot -multi-mongodb: spring boot 和mongodb多数据 的使用 spring - boot -package-war: spring - boot 打包成war包示例 spring - boot -shiro: spring boot 整合shiro rbac示例 spring - boot -file-upload:使用 Spring Boot 上传文件示例 spring - boot -fastDFS: Spring Boot 整合FastDFS示例 spring - boot -actuator: Spring Boot Actuator 使用示例 spring - boot -admin-simple: Spring Boot Admin 的使用示例
分布式任务调度管理 Distribution task center. 支持Rabbit与kafka两种 消息 队列,实现立即执行与根据CronExpress表达式的执行及更加复杂的复合执行策略。在任务执行过程中可完成回滚操作。 在微服务中我们经常会采用cron或 spring scheduler来实现调度任务。但是在分布式多节点架构中,我们不能让每个节点都去执行同一个任务。并且在任务执行过程中一旦遇到失败,必须具备一种回滚机制来保证分布式事务调度的一致性与完整性。本项目采用了 rabbitmq 与kafka两种 消息 队列,将任务调度从原始的业务微服务中有效分离,降低业务代码的耦合度。所有调度任务均由调度中心微服务发起。使原有业务真正实现分布式多节点运行。本资 包含了Github下载地址。
今天在写项目的时候遇到新需求,一个mq的功能要使用我们公司的 服务器 的mq,一个mq的功能要使用部署的那边的 服务器 的mq,话不多说直接上代码。 配置 文件application.yml: spring : rabbitmq : yjdpeservice: host: 192.168.0.1 port: 5672 username: xxin password: xxin yjservice:
Spring Boot 配置 RabbitMQ 的步骤如下: 1. 安装 RabbitMQ 服务器 ,可以在官网下载安装,也可以使用 Docker 容器来运行 RabbitMQ 。 2. 在项目中添加依赖,可以在 pom.xml 中添加以下内容: <dependency> <groupId>org. spring framework. boot </groupId> <artifactId> spring - boot -starter-amqp</artifactId> </dependency> 3. 在 application.properties 或者 application.yml 文件中 配置 RabbitMQ 相关的参数,例如: spring . rabbitmq .host=127.0.0.1 spring . rabbitmq .port=5672 spring . rabbitmq .username=guest spring . rabbitmq .password=guest 4. 创建一个 消息 生产者类,实现向 RabbitMQ 发送 消息 。 5. 创建一个 消息 消费者类,实现从 RabbitMQ 接收 消息 。 6. 在 Spring Boot 启动类中添加 @EnableRabbit 注解,以启用 RabbitMQ 的相关 配置 。 7. 运行项目,检查 RabbitMQ 是否能够正常收发 消息 。 以上是 Spring Boot 配置 RabbitMQ 的大致步骤,详细内容可以参考官方文档或者相关教程。
通过maven 打docker 镜像包,出错ADD failed: stat /var/lib/docker/tmp/docker-builderXXXXXX: no such file or dir 42857