热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springcloudstream+rabbitmq小记

2019独角兽企业重金招聘Python工程师标准此篇主要记录spring-cloudstream,对rabbitmq的安装使用不做累述。创建stream-rec

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

此篇主要记录spring-cloud stream,对rabbitmq的安装使用不做累述。

  1. 创建stream-receiver作为消费者
    pom.xml:


    cloud-streamcom.cherrish1.0-SNAPSHOT4.0.0stream-receiverorg.springframework.cloudspring-cloud-stream-binder-rabbit

    application.properties:
     

    spring.application.name=customer
    server.port=7889spring.rabbitmq.host=192.168.1.17
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=admin
    spring.rabbitmq.password=adminspring.cloud.stream.bindings.input.destination=sink-channel
    spring.cloud.stream.bindings.output.destination=sink-channel#不指定该输出通道无法接收消息

    Java 代码:
     

    /**********************************CustomerApp.java*********************************/
    package com.cherrish;import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author cherrishccl* @time 2018-08-31 14:53* @name CustomerApp* @desc:*/
    @SpringBootApplication
    public class CustomerApp {private static Logger logger = LoggerFactory.getLogger(CustomerApp.class);public static void main(String[] args) {SpringApplication.run(CustomerApp.class, args);}}
    /**********************************SinkReceiver.java*********************************/
    package com.cherrish;import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.cloud.stream.annotation.EnableBinding;
    import org.springframework.cloud.stream.annotation.StreamListener;
    import org.springframework.cloud.stream.messaging.Sink;
    import org.springframework.messaging.Message;import java.util.concurrent.atomic.AtomicInteger;/*** @author cherrish* @time 2018-08-31 14:39* @name SinkReceiver* @desc:*/
    @EnableBinding(value = Sink.class)
    public class SinkReceiver {private static final AtomicInteger NUM = new AtomicInteger(0);private static Logger log = LoggerFactory.getLogger(SinkReceiver.class);@StreamListener(Sink.INPUT)public void receive(Message payload) {log.info(NUM.getAndIncrement() + " Received : " + payload.getPayload());}
    }

     

  2. 创建stream-sender作为生产者
    pom.xml:
     


    cloud-streamcom.cherrish1.0-SNAPSHOT4.0.0stream-senderorg.springframework.cloudspring-cloud-stream-binder-rabbit

    application.properties:
     

    spring.application.name=producer
    server.port=7888spring.rabbitmq.host=192.168.1.195
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=admin
    spring.rabbitmq.password=adminspring.cloud.stream.bindings.input.destination=sink-channel
    spring.cloud.stream.bindings.output.destination=sink-channel


    Java代码:

    /**********************************ProducerApp.java*********************************/
    package com.cherrish;import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.scheduling.annotation.EnableScheduling;/*** @author cherrish* @time 2018-08-31 14:52* @name ProducerApp* @desc:*/
    @EnableScheduling
    @SpringBootApplication
    public class ProducerApp {private static Logger logger = LoggerFactory.getLogger(ProducerApp.class);public static void main(String[] args) {SpringApplication.run(ProducerApp.class, args);}
    }
    /**********************************SinkSender.java*********************************/
    package com.cherrish;import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cloud.stream.annotation.EnableBinding;
    import org.springframework.cloud.stream.messaging.Source;
    import org.springframework.integration.annotation.InboundChannelAdapter;
    import org.springframework.integration.annotation.Poller;import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.concurrent.atomic.AtomicInteger;/*** @author cherrish* @time 2018-08-30 16:16* @name SinkSender* @desc:*/
    @EnableBinding(value = {Source.class})
    public class SinkSender {private static Logger log = LoggerFactory.getLogger(SinkSender.class);private final static AtomicInteger NUM = new AtomicInteger(0);@InboundChannelAdapter(value = Source.OUTPUT,poller = @Poller(fixedRate = "3000"))public String timerMessageSource() {String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());log.info(NUM.getAndIncrement() + " Send message : " + format);return format;}@AutowiredSource source;public void send(String message){source.output().send(org.springframework.integration.support.MessageBuilder.withPayload(message).build());}
    }
    /**********************************ScheduleTimer.java*********************************/package com.cherrish;import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;import java.util.Date;/*** @author cherrish* @time 2018-09-03 10:58* @name ScheduleTimer* @desc:*/
    @Component
    public class ScheduleTimer {@AutowiredSinkSender sender;@Scheduled(fixedRate = 3000)public void send(){sender.send("定时调用发送消息" + new Date());}
    }

    ---------------------------
    父pom.xml:
     


    4.0.0com.cherrish1.0-SNAPSHOTcloud-streampomstream-senderstream-receiverFinchley.RELEASEUTF-81.81.81.82.0.4.RELEASEtrueorg.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimportorg.springframework.bootspring-boot-dependencies${spring-boot.version}pomimport

     


转:https://my.oschina.net/u/574036/blog/1942196



推荐阅读
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • HTTP请求与响应机制:基础概览
    在Web浏览过程中,HTTP协议通过请求和响应报文实现客户端与服务器之间的通信。当用户访问一个网页时,浏览器会发送一个HTTP请求报文至服务器,服务器接收到请求后,会生成并返回一个HTTP响应报文。这两种报文均包含三个主要部分:起始行、头部字段和消息体,确保了数据的有效传输和解析。 ... [详细]
  • GoCD 创建管道时遇到 422 错误:权限不足问题分析与解决
    在 GoCD 创建管道时遇到 422 错误,通常是因为反向代理配置不正确,特别是缺少必要的头部信息。具体来说,需要确保在反向代理配置中添加 `proxy_set_header Host $host;` 和 `proxy_set_header X-Real-IP $remote_addr;` 等关键指令,以确保 GoCD 能够正确识别请求来源并进行权限验证。通过调整这些配置,可以有效解决权限不足的问题,确保管道创建过程顺利进行。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • Android ListView 自定义 CheckBox 实现列表项多选功能详解
    本文详细介绍了在Android开发中如何在ListView的每一行添加CheckBox,以实现列表项的多选功能。用户不仅可以通过点击复选框来选择项目,还可以通过点击列表的任意一行来完成选中操作,提升了用户体验和操作便捷性。同时,文章还探讨了相关的事件处理机制和布局优化技巧,帮助开发者更好地实现这一功能。 ... [详细]
  • Spring注解开发指南:@Resource与@Component详解 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有