springcloudstream整合rabbitmq

 

1、通过docker安装ribbitmq

拉取镜像
docker pull rabbitmq:3.8.6-management

运行镜像

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --hostname myRabbit  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.8.6-management

2、生产者代码

添加依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            <version>3.0.7.RELEASE</version>
        </dependency>

添加配置文件

复制代码
spring:
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                addresses: 192.168.178.128
                port: 5672
                username: admin
                password: admin
      bindings:
        output: #通道的名称
          destination: exchange1 #表示要使用的exchange名称的定义
          content-type: application/json
          binder: defaultRabbit
复制代码

编写接口

public interface MessageProvider {
    public String send();
}

编写实现类

复制代码
@EnableBinding(Source.class)
public class IMessageSendProvider implements MessageProvider {

    @Resource
    private Source source;
    @Override
    public String send() {
        source.output().send(MessageBuilder.withPayload(UUID.randomUUID().toString()).build());
//        boolean send = messageChannel.send(MessageBuilder.withPayload(UUID.randomUUID().toString()).build());
        return "success";
    }
}
复制代码

3、消费者代码

添加依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
            <version>3.0.7.RELEASE</version>
        </dependency>

添加配置文件

复制代码
spring:
  cloud:
    stream:
      binders:
        defaultRabbit:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                addresses: 192.168.178.128
                port: 5672
                username: admin
                password: admin
      bindings:
        input: #通道的名称
          destination: exchange1 #表示要使用的exchange名称的定义
          content-type: application/json
          binder: defaultRabbit
复制代码

编写代码

复制代码
 
@EnableBinding(Sink.class)
@Service
public class LianxiCuseromer {

@StreamListener(Sink.INPUT)
public void test(Message<String> message){
String payload = message.getPayload();
System.out.println(payload);
}
}


复制代码

安装延迟队列插件:

地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

 将插件拷贝到容器内:

docker cp rabbitmq_delayed_message_exchange-3.8.0.ez  rabbitmq:/plugins

进入容器,并查看插件

[root@local rabbitmq]# docker exec -it rabbitmq /bin/bash
root@3bb56f68570b:/# rabbitmq-plugins list

重启容器:

root@3bb56f68570b:/# rabbitmq-plugins enable rabbitmq_delayed_message_exchange

参考:https://devpress.csdn.net/cloudnative/66d2fbbec618435984a4d414.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjUyMTEzOCwiZXhwIjoxNzI5ODA3NDE0LCJpYXQiOjE3MjkyMDI2MTQsInVzZXJuYW1lIjoicXFfMzgxODY1MDcifQ.ODwp-1becVJcyXeTPO_jrHUr8egtWQ8wW6HEsmf9Kig&spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-3-118391439-blog-141829086.235%5Ev43%5Epc_blog_bottom_relevance_base8&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-3-118391439-blog-141829086.235%5Ev43%5Epc_blog_bottom_relevance_base8&utm_relevant_index=6

posted @   刘百会  阅读(1379)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示