Redis整合springboot实现消息队列

publisher消息的发出

代码整体的结构

publisherConfig

package com.cc.springbootredispublisher.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;@Configuration
public class PublisherConfig {@Beanpublic StringRedisTemplate template(RedisConnectionFactory connectionFactory) {return new StringRedisTemplate(connectionFactory);}
}

publisherController

package com.cc.springbootredispublisher.controller;import com.cc.springbootredispublisher.service.PublishService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
@RequestMapping
public class PublisherController {@Resourceprivate PublishService publishService;@GetMapping("/publish/{msg}")public String publih(@PathVariable String msg) {// 发送消息publishService.publish(msg);return "ok";}
}

PublishServiceImpl 

package com.cc.springbootredispublisher.service.impl;import com.cc.springbootredispublisher.service.PublishService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class PublishServiceImpl implements PublishService{static Logger logger = LoggerFactory.getLogger(PublishServiceImpl.class);@Resourceprivate StringRedisTemplate stringRedisTemplate;@Value("${redis.msg.topic}")private String redisTopic;@Overridepublic void publish(String msg) {stringRedisTemplate.convertAndSend(redisTopic, msg);logger.info("send msg: {}", msg);}
}

PublishService

package com.cc.springbootredispublisher.service;public interface PublishService {void publish(String msg);
}

application.properties

server.port=8098
########################################################
###REDIS (RedisProperties) redis基本配置;
########################################################
# database name
spring.redis.database=0
# server host1 单机使用,对应服务器ip
spring.redis.host=192.168.133.130
# server password 密码,如果没有设置可不配
#spring.redis.password=
#connection port  单机使用,对应端口号
spring.redis.port=10190
# pool settings ...池配置
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1redis.msg.topic=test-topic

配置文件

<?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>com.cc</groupId><artifactId>springboot-redis-publisher</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-redis-publisher</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.13.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-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.0</version></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>

 

消息的接收

代码的整体结构

SubscriberConfig

package com.cc.springbootredissubscriber.config;import com.cc.springbootredissubscriber.Receiver;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;import java.util.concurrent.CountDownLatch;@Configuration
public class SubscriberConfig {@Value("${redis.msg.topic}")private String redisTopic;@Beanpublic RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter){RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);container.addMessageListener(listenerAdapter,new PatternTopic(redisTopic));return container;}@Beanpublic MessageListenerAdapter listenerAdapter(Receiver receiver){return new MessageListenerAdapter(receiver,"receiveMessage");}@Beanpublic Receiver receiver(CountDownLatch latch){return new Receiver(latch);}@Beanpublic CountDownLatch latch(){return new CountDownLatch(1);}
}

 Receiver

package com.cc.springbootredissubscriber;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.concurrent.CountDownLatch;public class Receiver {private static final Logger logger = LoggerFactory.getLogger(Receiver.class);private CountDownLatch latch;public Receiver(CountDownLatch latch) {this.latch = latch;}public void receiveMessage(String msg) {logger.info("receive msg: {} ", msg);latch.countDown();}
}

application.properties

server.port=8092########################################################
###REDIS (RedisProperties) redis基本配置;
########################################################
# database name
spring.redis.database=0
# server host1 单机使用,对应服务器ip
spring.redis.host=192.168.133.130
# server password 密码,如果没有设置可不配
#spring.redis.password=
#connection port  单机使用,对应端口号
spring.redis.port=10190
# pool settings ...池配置
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1redis.msg.topic=test-topic

配置文件

<?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>com.cc</groupId><artifactId>springboot-redis-subscriber</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-redis-subscriber</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.13.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-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.0</version></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>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据缓存

代码的整体结构 配置文件 <?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.apac…

hevc/265 开源项目及相关

1.X265 个是有两个版本&#xff0c;一个是国内人搞的&#xff0c;是国外公司搞的 1.国外公司版本 只是一个编码器&#xff0c;目前没有支持解码 开发语言 c web url: www.x265.org source url: https://bitbucket.org/multicoreware/x265 x265 is an open-source projec…

IPFS星际文件系统的简介

IPFS简介 IPFS&#xff08;InterPlanetary File System&#xff09;叫星际文件传输系统&#xff0c;本质是一个基于点对点的分布式超媒体分发协议&#xff0c;它整合了分布式系统&#xff0c;为所有人提供全球统一的可寻址空间&#xff0c;因为他具有良好的安全性、较高的传输…

ARM和NEON指令 very nice

在移动平台上进行一些复杂算法的开发&#xff0c;一般需要用到指令集来进行加速。目前在移动上使用最多的是ARM芯片。 ARM是微处理器行业的一家知名企业&#xff0c;其芯片结构有&#xff1a;armv5、armv6、armv7和armv8系列。芯片类型有&#xff1a;arm7、arm9、arm11、corte…

IPFS下载安装和配置

参考链接 因为这个网站访问速度很慢&#xff0c;我提供了IPFS的MAC版本。有需要的查看我的资源下载。 大致流程 安装 $ ls go-ipfs_v0.4.10_darwin-amd64.tar.gz $ tar xvfz go-ipfs_v0.4.10_darwin-amd64.tar.gz x go-ipfs/build-log x go-ipfs/install.sh x go-ipfs/ipfs…

arm 开发工具比较(ADS vs RealviewMDK vs RVDS)

ADS REALVIEW MDK RVDS 公司 ARM Keil&#xff08;后被ARM收购&#xff09; ARM 版本 最新1.2 ,被RVDS取代 最新4.0 是否免费 破解情况 有 有 工程管理 CodeWarrior IDE nVision IDE Eclipse/ CodeWarrior IDE 编译器 ARM C compiler for AD…

解决macOS Catalina(10.15)解决阻止程序运行“macOS无法验证此App不包含恶意软件”

在终端里面输入如下命令 sudo spctl --master-disable 下面图片对比执行命令前后&#xff0c;安全性与隐私 界面上显示的差异&#xff1a;使用命令之后&#xff0c;界面变了

MAC版 的最新Docker 2.2版本配置国内代理的解决办法

点击Docker图标&#xff0c;选择Preference选项&#xff0c;进行国内代理的问题 输入内容如下 {"experimental": false,"debug": true,"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.…

《算法的乐趣》作者王晓华访谈:多看、多做、多想是秘诀

摘要&#xff1a;王晓华是一位热衷于算法研究的程序员&#xff0c;他是CSDN算法专栏的超人气博主&#xff0c;也是《算法的乐趣》一书的作者。近日&#xff0c;笔者采访了王晓华&#xff0c;请他分享算法的经验之道。 王晓华是一位热衷于算法研究的程序员&#xff0c;他是CSDN…

基于Mac环境搭建以太坊私有区块链进行挖矿模拟

第一步&#xff1a;相关软件的安装 go-ethereum客户端安装Go-ethereum客户端通常被称为Geth&#xff0c;它是个命令行界面&#xff0c;执行在Go上实现的完整以太坊节点。Geth得益于Go语言的多平台特性&#xff0c;支持在多个平台上使用(比如Windows、Linux、Mac)。Geth是以太坊…

vs2015 支持Android arm neon Introducing Visual Studio’s Emulator for Android

visual studio 2015支持Android开发了。 Microsoft released Visual Studio 2015 Preview this week and with it you now have options for Android development. When choosing one of those Android development options, Visual Studio will also install the brand new Vi…

FFmpeg示例程序合集-批量编译脚本

此前做了一系列有关FFmpeg的示例程序&#xff0c;组成了《 最简单的FFmpeg示例程序合集》&#xff0c;其中包含了如下项目&#xff1a;simplest ffmpeg player: 最简单的基于FFmpeg的视频播放器simplest ffmpeg audio player: 最简单的基于FFmpeg的音频…

基于Ubuntu环境使用docker搭建对于中文识别的chineseocr_lite项目

光学字符识别&#xff08;OCR&#xff09; 光学字符识别&#xff08;OCR&#xff09;目前已经有了很广泛的应用&#xff0c;很多开源项目都会嵌入OCR 来扩展原有的能力&#xff0c;例如身份证识别、出入停车场的车牌识别、拍照翻译等等本文介绍的开源的中文 OCR 项目&#xff…

Ubuntu环境使用conda安装轻量级中文ocr开源项目chineseocr_lite,最简单的方式

问题 接使用docker的方式来创建项目所报的错误选中文件之后&#xff0c;界面不停的绕圈&#xff0c;显示不了对于图片的识别结果&#xff0c;并且监控界面上出现错误提示如下ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory&a…

基于Ubuntu使用docker的方式来搭建基于Yolo3+crnn的Chineseocr识别

Docker Docker简单易用&#xff0c;具体的安装和配置可以看我的或者其他人的博客 安装完之后&#xff0c;输入以下命令安装chineseocr并且开启服务 docker pull zergmk2/chineseocr docker run -d -p 8080:8080 zergmk2/chineseocr 在浏览器输入http://127.0.0.1:8080/ocr网…

c/c++ 内存使用指南 和实践指导

如果你完全理解如下内容&#xff0c; 请联系我&#xff1a;szu030606163.com&#xff0c; 讨论更深层次合作 。 1. 大内高手—内存模型 单线程模型 多线程模型 2. 大内高手—栈/堆 backtrace的实现 alloca的实现 可变参数的实现。 malloc/free系列函数简介 new…

mininet 应用实践

教学目的与学时建议 能够运用 mininet 可视化工具创建计算机网络拓扑结构能够运用 mininet 交互界面创建拓扑结构能够运用 python 脚本构建计算机网络拓扑结构建议&#xff1a;2 学时 实验环境 下载并安装虚拟机 VMware workstation&#xff1b;下载虚拟机镜像&#xff08; S…

实现基于darknet框架实现CTPN版本自然场景文字检测 与CNN+CTCOCR文字识别的ChineseOCR搭建

Github地址 Github源码地址 支持系统:mac/ubuntu python3.6 实现功能 文字检测&#xff1b; 文字识别&#xff1b; 支持GPU/CPU&#xff0c;CPU优化&#xff08;opencv dnn&#xff09; docker镜像服务&#xff08;CPU优化版本&#xff09; 下载镜像 链接:https://pan.baidu…

在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本

Github地址 参考地址作者大人&#xff0c;十分热心&#xff0c;对于我的问题&#xff0c;提供了大量的帮助&#xff0c;使我少走了很多的弯路&#xff0c;在此表示由衷的感谢 注意事项 使用nvidia-smi命令查看cuda的版本&#xff0c;必须是10.1或者10.0&#xff0c;10.2是万万…

算法入门篇 一 时间复杂度

时间复杂度 要求&#xff1a;只要高阶项&#xff0c;不要低阶项常数操作&#xff1a;操作花费的时间和数据量无关&#xff0c;比如数组寻址&#xff0c;直接利用偏移量找到对应元素的位置&#xff1b;非常数操作&#xff1a;比如list(链表)&#xff1b;查找元素需要遍历链表&a…