热门标签 | 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



推荐阅读
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文作为SpringCloud Alibaba系列教程的第一部分,主要介绍如何搭建SpringCloud Alibaba的开发环境,帮助初学者快速入门。SpringCloud Alibaba是由阿里巴巴团队开源的一套微服务工具集,旨在简化分布式系统的构建过程。 ... [详细]
  • 利用YAML配置Resilience4J的Circuit Breaker
    本文探讨了Resilience4j作为现代Java应用程序中不可或缺的容错工具,特别介绍了如何通过YAML文件配置Circuit Breaker以提高服务的弹性和稳定性。 ... [详细]
  • 掌握Spring MVC中自定义类型转换与格式化的技巧
    近期,在开发一款小程序的过程中遇到了几个Spring MVC接口需要传递时间参数的问题。本文将详细介绍如何利用Java 8 Time API在Spring MVC中实现时间参数的自定义类型转换和格式化。 ... [详细]
  • 利用RabbitMQ实现高效延迟任务处理
    本文详细探讨了如何利用RabbitMQ实现延迟任务,包括其应用场景、实现原理、系统设计以及具体的Spring Boot实现方式。 ... [详细]
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社区 版权所有