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);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM