中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Stream怎么在SpringCloud中使用

發布時間:2021-03-31 15:09:21 來源:億速云 閱讀:236 作者:Leah 欄目:開發技術

本篇文章為大家展示了Stream怎么在SpringCloud中使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.建一個項目,并添加如下的依賴:

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    </dependency>

2.編寫下面的yml文件

server:
 port: 8801

spring:
 application:
  name: cloud-stream-provider
 rabbitmq:
  host: 192.168.43.76
  port: 5672
  username: guest
  password: guest
 cloud:
  stream:
   binders: # 在此處配置要綁定的rabbitmq的服務信息;
    defaultRabbit: # 表示定義的名稱,用于于binding整合
     type: rabbit # 消息組件類型
#     environment: # 設置rabbitmq的相關的環境配置,(本機方式)
#      spring:
#       rabbitmq:
#        host: localhost
#        port: 5672
#        username: guest
#        password: guest
   bindings: # 服務的整合處理
    output: # 這個名字是一個通道的名稱
     destination: studyExchange # 表示要使用的Exchange名稱定義
     content-type: application/json # 設置消息類型,本次為json,文本則設置“text/plain”
     binder: defaultRabbit # 設置要綁定的消息服務的具體設置(爆紅不要管)

eureka:
 client: # 客戶端進行Eureka注冊的配置
  service-url:
   defaultZone: http://localhost:7001/eureka
 instance:
  lease-renewal-interval-in-seconds: 2 # 設置心跳的時間間隔(默認是30秒)
  lease-expiration-duration-in-seconds: 5 # 如果現在超過了5秒的間隔(默認是90秒)
  instance-id: send-8801.com # 在信息列表時顯示主機名稱
  prefer-ip-address: true   # 訪問的路徑變為IP地址

3.編寫service,下面僅展示實現類:

import org.lzl.springcloud.service.IMessageProvider;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import javax.annotation.Resource;
import java.util.UUID;


//注意這里不需要寫@Service,因為該service是跟rabbitmq打交道的
@EnableBinding(Source.class)//定義消息的推送管道
public class MessageProviderImpl implements IMessageProvider {

  @Resource
  private MessageChannel output;

  @Override
  public String send() {
    String serial = UUID.randomUUID().toString();
    output.send(MessageBuilder.withPayload(serial).build());
    System.out.println("*****serial:"+serial);
    return null;
  }
}

4.編寫controller

import org.lzl.springcloud.service.IMessageProvider;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;

@RestController
public class SendMessageController {
  @Resource
  private IMessageProvider messageProvider;

  @GetMapping(value = "/sendMessage")
  public String sendMessage(){
    return messageProvider.send();
  }
}

案例之消息驅動消費者

1.寫pom,加上下面的依賴

	<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

2.編寫yml,和生產者唯一的區別在于,下面是input

server:
 port: 8802

spring:
 application:
  name: cloud-stream-consumer
 rabbitmq:
  host: 192.168.43.76
  port: 5672
  username: guest
  password: guest
 cloud:
  stream:
   binders: # 在此處配置要綁定的rabbitmq的服務信息;
    defaultRabbit: # 表示定義的名稱,用于于binding整合
     type: rabbit # 消息組件類型
#     environment: # 設置rabbitmq的相關的環境配置
#      spring:
#       rabbitmq:
#        host: localhost
#        port: 5672
#        username: guest
#        password: guest
   bindings: # 服務的整合處理
    input: # 這個名字是一個通道的名稱
     destination: studyExchange # 表示要使用的Exchange名稱定義
     content-type: application/json # 設置消息類型,本次為對象json,如果是文本則設置“text/plain”
     binder: defaultRabbit # 設置要綁定的消息服務的具體設置



eureka:
 client: # 客戶端進行Eureka注冊的配置
  service-url:
   defaultZone: http://localhost:7001/eureka
 instance:
  lease-renewal-interval-in-seconds: 2 # 設置心跳的時間間隔(默認是30秒)
  lease-expiration-duration-in-seconds: 5 # 如果現在超過了5秒的間隔(默認是90秒)
  instance-id: receive-8802.com # 在信息列表時顯示主機名稱
  prefer-ip-address: true   # 訪問的路徑變為IP地址

3.編寫controller,該controller不向外界暴露端口,起到實時監控消息管道的作用!

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
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 org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@Component
@EnableBinding(Sink.class)
public class ReceiveMessageListenerController {
  @Value("${server.port}")
  private String serverPort;

  @StreamListener(Sink.INPUT)//只要8801發送消息,8802就會接收到8801的消息
  public void input(Message<String> message){
    System.out.println("消費者1號--------》接收到的消息:"+message.getPayload()+"\t port: "+serverPort);
  }

}

測試

啟動rabbitMQ和上面的兩個項目,訪問http://localhost:8801/sendMessage
在消費者的控制臺中就會出現下面的訂單流水號:

Stream怎么在SpringCloud中使用

補充說明

我們打開rabbitmq的監控界面:發現默認是幫我們分組的

Stream怎么在SpringCloud中使用

想要自定義分組只需要在消費者的yml文件中加上下面的一行:

Stream怎么在SpringCloud中使用

上述內容就是Stream怎么在SpringCloud中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荣昌县| 宽城| 武义县| 白沙| 新化县| 鄢陵县| 扶余县| 连城县| 白朗县| 聊城市| 峨眉山市| 正安县| 高雄县| 麻城市| 旬邑县| 奈曼旗| 张家港市| 苍溪县| 包头市| 蛟河市| 广东省| 惠东县| 潢川县| 桃源县| 囊谦县| 阳新县| 女性| 基隆市| 鲁甸县| 治县。| 荃湾区| 齐河县| 呼图壁县| 田阳县| 图木舒克市| 阿克| 南丹县| 富裕县| 旺苍县| 久治县| 淮安市|