java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
电子商务社交平台源码请加企鹅求求:三五三六二四七二五九。
这篇文章带你了解怎么整合RabbitMQ服务器,并且通过它怎么去发送和接收消息。我将构建一个springboot工程,通过RabbitTemplate去通过MessageListenerAdapter去订阅一个POJO类型的消息。
准备工作
15min
IDEA
maven 3.0
在开始构建项目之前,机器需要安装rabbitmq,你可以去官网下载,http://www.rabbitmq.com/download.html ,如果你是用的Mac(程序员都应该用mac吧),你可以这样下载:
brew install rabbitmq复制代码
安装完成后开启服务器:
rabbitmq-server复制代码
开启服务器成功,你可以看到以下信息:
RabbitMQ 3.1.3. Copyright (C) 2007-2013 VMware, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /usr/local/var/log/rabbitmq/rabbit@localhost.log
###### ## /usr/local/var/log/rabbitmq/rabbit@localhost-sasl.log
##########Starting broker... completed with 6 plugins.复制代码
构建工程
构架一个SpringBoot工程,其pom文件依赖加上spring-boot-starter-amqp的起步依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>复制代码
创建消息接收者
在任何的消息队列程序中,你需要创建一个消息接收者,用于响应发送的消息。
@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;}}复制代码
消息接收者是一个简单的POJO类,它定义了一个方法去接收消息,当你注册它去接收消息,你可以给它取任何的名字。其中,它有CountDownLatch这样的一个类,它是用于告诉发送者消息已经收到了,你不需要在应用程序中具体实现它,只需要latch.countDown()就行了。
创建消息监听,并发送一条消息
在spring程序中,RabbitTemplate提供了发送消息和接收消息的所有方法。你只需简单的配置下就行了:
需要一个消息监听容器
声明一个quene,一个exchange,并且绑定它们
一个组件去发送消息
代码清单如下:
package com.forezp;import com.forezp.message.Receiver;
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.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class SpringbootRabbitmqApplication {final static String queueName = "spring-boot";@BeanQueue queue() {return new Queue(queueName, false);}@BeanTopicExchange exchange() {return new TopicExchange("spring-boot-exchange");}@BeanBinding binding(Queue queue, TopicExchange exchange) {return BindingBuilder.bind(queue).to(exchange).with(queueName);}@BeanSimpleMessageListenerContainer container(ConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();container.setConnectionFactory(connectionFactory);container.setQueueNames(queueName);container.setMessageListener(listenerAdapter);return container;}@BeanMessageListenerAdapter listenerAdapter(Receiver receiver) {return new MessageListenerAdapter(receiver, "receiveMessage");}public static void main(String[] args) {SpringApplication.run(SpringbootRabbitmqApplication.class, args);}
}复制代码
创建一个测试方法:
@Component
public class Runner implements CommandLineRunner {private final RabbitTemplate rabbitTemplate;private final Receiver receiver;private final ConfigurableApplicationContext context;public Runner(Receiver receiver, RabbitTemplate rabbitTemplate,ConfigurableApplicationContext context) {this.receiver = receiver;this.rabbitTemplate = rabbitTemplate;this.context = context;}@Overridepublic void run(String... args) throws Exception {System.out.println("Sending message...");rabbitTemplate.convertAndSend(Application.queueName, "Hello from RabbitMQ!");receiver.getLatch().await(10000, TimeUnit.MILLISECONDS);context.close();}}复制代码
启动程序,你会发现控制台打印:
电子商务社交平台源码请加企鹅求求:三五三六二四七二五九
转载于:https://juejin.im/post/5cff25c4e51d4577790c1c63
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...相关推荐
- (十六)java springcloud版b2b2c社交电商spring cloud分布式微服务-使用spring cloud Bus刷新配置...
b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (七)高可用的分布式配置中心(Spring Cloud Config)...
Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务-docker-feign(四)
简介 Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.上一节,我们讨论了怎么通过,restTemlate调用cloud的生产者,实现起 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务(十三)断路器聚合监控(Hystrix Turbine)...
Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command.当我们有很多个 ...
- java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)
一.断路器简介 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六 Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合. 在微服务架构中,一个请求 ...
- java版b2b2c社交电商spring cloud分布式微服务(五)springboot整合 beatlsql
电子商务社交平台源码请加企鹅求求:三五三六二四七二五九.BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需 ...
- java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心
JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config是Spring Cloud团队创建的一个 ...
- java版b2b2c社交电商spring cloud分布式微服务-服务提供与调用
java版b2b2c社交电商spring cloud分布式微服务源码请加企鹅求求:一零三八七七四六二六.上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册 ...
- java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)
简介 springcloud电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.上一节我们讨论feign的配置,这节我们讨论一下,feign+hystrix调用生产者时,进行容错处理. 一.创建模 ...
最新文章
- python读取文件名存到list_python读取文件名称生成list的方法
- [LeetCode 001] Two Sum
- WebSphere MQ----通道
- hibernate的HQL查询语言总结
- (仿头条APP项目)7.首页标签页完善和微头条页面设计实现
- Acdream1157---Segments (CDQ分治)
- PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues
- RTX5 | 消息队列01 - 创建消息队列
- git 修改已提交的 commit
- [sublime] sublime 实现Markdown编辑器
- 爬虫文件存储-2:MongoDB
- 浅析计算机应用管理及前景,论计算机应用技术的现状及前景
- java 实体类重写排序,对自定义对象进行排序(C++/Java) | 学步园
- 在鱼池终于挖到0.01的Zcash(ZEC)了,目前正在打款
- “win+PrtSc”图片没有保存到图片文件夹中的问题
- 屏蔽csdn右下角广告插件
- 计算机的工作原理(冯诺依曼体系)
- 自定义流程比较全的表结构
- 免费获得minecraft账号,快来试试!!!
- 3DMAX 9 角色建模3 uv展开
热门文章
- IOC 容器中那些鲜为人知的细节(关于 FactoryBean 和 BeanFactory)
- java GoF 的 23 种设计模式的分类和功能
- 1080. MOOC期终成绩 (25)-PAT乙级真题
- Xcode误删Images.xcassets文件夹的恢复办法(Assets.xcassets)
- xcode 中不小心删除 stroryboard 的恢复办法
- 车rc陀螺仪测试软件,利用加速度计和陀螺仪测量车辆运动
- zabbix监控哪些东西_监控系统选型,一篇全搞定
- Unsupported protocol: t3 异常的处理
- SaaS:新智能背景下重构各个领域的生态系统
- 基于Raspbian(树莓派)搭建web安全练习环境(一)