<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Blazor+Dapr+K8s微服務(wù)之事件發(fā)布訂閱

      我們要實現(xiàn)的是:在blazorweb服務(wù)中發(fā)布一個事件,并傳遞事件參數(shù),然后在serviceapi1服務(wù)中訂閱該事件,接收到blazorweb服務(wù)中發(fā)布的事件和參數(shù)。

      1         在blazorweb服務(wù)中發(fā)布一個事件

      在DaprTest1.Server項目的WeatherForecastController.cs文件中增加事件發(fā)布API:

        [HttpPost(nameof(PublishTestEvent))]
              public async Task PublishTestEvent(TestEventModel eventModel)
              {
                  await _daprClient.PublishEventAsync<TestEventModel>("pubsub", "TestEventName", eventModel);
              }

      "TestEventModel"是自定義的事件消息類,"TestEventName"是事件的名稱,"pubsub" 是事件發(fā)布訂閱的名稱,定義在“pubsub.yaml” 組件中:

      apiVersion: dapr.io/v1alpha1
      kind: Component
      metadata:
        name: pubsub
      spec:
        type: pubsub.redis
        version: v1
        metadata:
        - name: redisHost
          value: localhost:6379
        - name: redisPassword
          value: ""

      這個組件中定義的發(fā)布訂閱采用了Redis 的 Stream 特性,要注意舊版本的Redis是否支持Stream。

      2         在serviceapi1服務(wù)中訂閱該事件

      在DaprTest1.ServiceApi1項目中添加Dapr.AspNetCore包,該包實現(xiàn)了ASP.NET Core與Dapr的集成,例如依賴注入DaprClient對象,將事件訂閱發(fā)布功能直接集成到 ASP.NET Core 模型綁定功能中等。

       

      在DaprTest1.ServiceApi1項目的Startup.cs 文件增加事件訂閱相關(guān)代碼(注意綠色部分):

      public void ConfigureServices(IServiceCollection services)
              {
      
                  services.AddControllers().AddDapr();
                  services.AddSwaggerGen(c =>
                  {
                      c.SwaggerDoc("v1", new OpenApiInfo { Title = "DaprTest1.ServiceApi1", Version = "v1" });
                  });
              }
      
              // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
              public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
              {
                  if (env.IsDevelopment())
                  {
                      app.UseDeveloperExceptionPage();
                      app.UseSwagger();
                      app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "DaprTest1.ServiceApi1 v1"));
                  }
      
                  app.UseRouting();
      
                  app.UseAuthorization();
      
                  app.UseCloudEvents();
      
                  app.UseEndpoints(endpoints =>
                  {
                      endpoints.MapSubscribeHandler();
                      endpoints.MapControllers();
                  });
              }

      在DaprTest1.ServiceApi1項目的WeatherForecastController文件增加事件訂閱API

        [Topic("pubsub", "TestEventName")]
              [HttpPost(nameof(SubscribleTestEvent))]
              public async Task SubscribleTestEvent(TestEventModel eventModel)
              {
                   await Task.CompletedTask;
              }

      [Topic("pubsub", "TestEventName")] 訂閱了"pubsub"訂閱名稱的TestEventName事件。

      3         在Blazor項目中增加Blazor前端事件發(fā)布菜單和頁面

      @page "/pubsub"
      @using DaprTest1.Shared
      @using System.Text.Json
      @inject HttpClient Http
      
      <h1>發(fā)布訂閱</h1>
      
      <p>This component demonstrates publish and subscrible event.</p>
      
      <p>編碼:<input type="text" @bind="eventModel.Code" />, 數(shù)量:<input type="text" @bind="eventModel.Amount" /></p>
      
      <button class="btn btn-primary" @onclick="PublishEvent">發(fā)布事件</button>
      
      
      
      @code {
          private TestEventModel eventModel = new TestEventModel();
          private async Task PublishEvent() => await Http.PostAsJsonAsync<TestEventModel>("WeatherForecast/PublishTestEvent", eventModel);
      
      }

       

      4         事件發(fā)布訂閱測試

      和上一節(jié)一樣,我們先開啟每個微服務(wù)的SideCar,注意,因為的SideCar 指定了狀態(tài)存儲的Redis,所以我們先要開啟Redis,不然SideCar會啟動失敗。確保每個微服務(wù)的SideCar都是運行狀態(tài)。

       

      然后啟動兩個微服務(wù),并訪問http://localhost:5000

       

      在ServiceApi1服務(wù)的事件接收處設(shè)置好斷點,然后點擊“發(fā)布事件”按鈕

       

      可以看到,我們成功接收到了TestEventName事件和事件發(fā)布的參數(shù)。

      5         將Dapr的發(fā)布訂閱組件修改為RabbitMQ

      通常情況下,我們會用RabbitMQ來支持事件的發(fā)布和訂閱,我們將Dapr 發(fā)布訂閱組件“pubsub.yaml”,修改為如下內(nèi)容即可:

      apiVersion: dapr.io/v1alpha1
      kind: Component
      metadata:
        name: pubsub
      spec:
        type: pubsub.rabbitmq
        version: v1
        metadata:
        - name: host
          value: "amqp://admin:******@localhost:5672"
        - name: durable
          value: true

       

      相關(guān)代碼:iamxiaozhuang/dapr-test (github.com)

      posted on 2021-08-30 18:15  小莊  閱讀(812)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产视频最新| 色综合久久中文综合久久激情| 不卡国产一区二区三区| 国产超碰人人做人人爰| 青青国产揄拍视频| 久久人妻公开中文字幕| 久久久久四虎精品免费入口| 成人午夜激情在线观看 | 老司机午夜免费精品视频| 免费国产精品黄色一区二区| 岑巩县| 日韩 一区二区在线观看| √天堂中文www官网在线| 中文字幕人妻在线精品| 免费观看全黄做爰大片| 久久综合干| 亚洲欧美中文字幕日韩一区二区| 中文在线最新版天堂| 久久亚洲国产欧洲精品一| 国产午夜亚洲精品国产成人| 2021国产精品视频网站| 亚洲男女羞羞无遮挡久久丫| 久久亚洲色WWW成人男男| 黑人精品一区二区三区不| 久久亚洲精品11p| 人人妻人人做人人爽| 高雄县| 一本精品99久久精品77| 精品乱人伦一区二区三区| 亚洲区福利视频免费看| 亚洲电影天堂av2017| 精品久久精品午夜精品久久| 大尺度国产一区二区视频| 人妻中文字幕不卡精品| 中文字幕日韩精品有码| 熟女人妻aⅴ一区二区三区电影| av 日韩 人妻 黑人 综合 无码| 日本伊人色综合网| 熟妇人妻无码中文字幕老熟妇| 亚洲aⅴ综合av国产八av| 少妇高潮喷水惨叫久久久久电影|