zoukankan      html  css  js  c++  java
  • CAP自己搞得

    参考文章   参考文章   参考文章

    算是搞了一大中午,切身的效果出来了,但是感觉效果不是很好,链接容易断。

    但是还是切实体会到分布式的效果,Received不用及时的去接收信息。你只管去发送信息,不用管接收的。接收的指令,运行起来后,程序会自动的从Rabbitmq中获取信息。

    先熟悉三个Url:

       1:https://localhost:44360/api/values(本地项目运行)

       2:http://localhost:15672/#/(RabbitMq)   

       3:https://localhost:44360/cap/(CAp的仪表盘)

    首先:

    先创建webapi的项目:

    namespace CapLinkMQ.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
            private readonly B2BContext _accb2b;
            private readonly ICapPublisher capPublisher;
    
            public ValuesController(B2BContext _acc, ICapPublisher Cap)
            {
                _accb2b = _acc;
                capPublisher = Cap;
            }
             //发送
            //[HttpGet]
            //public async Task<ActionResult> PutOrderToWms()
            //{
            //    ActionResult result = null;
            //    await capPublisher.PublishAsync("sample.rabbitmq.prozkb", "zkb");
            //    return result;
            //}

    //接收 [CapSubscribe("sample.rabbitmq.prozkb")] public async Task Receive(string parameters) { Console.WriteLine(parameters); } } }

    然后是Sartup中进行配置

    namespace CapLinkMQ
    {
        public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddDbContext<_B2BContext>();
                services.AddCap(x =>
                                {
                                    x.UseEntityFramework<_B2BContext>();//会在这个表中生成Cap.Published 和Cap.Received 两个表
                                    x.UseRabbitMQ(optional =>//配置RabbitMQ
                                    {
                                        optional.HostName = "127.0.0.1";
                                        optional.Password = "guest";
                                        optional.UserName = "guest";
                                    });
                                    x.UseDashboard();
                                }
                    );
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
                services.AddApiVersioning(option =>
                {
                    option.ReportApiVersions = true;
                    option.AssumeDefaultVersionWhenUnspecified = true;
                    option.DefaultApiVersion = new Microsoft.AspNetCore.Mvc.ApiVersion(1, 0);
                });
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {               
                    app.UseHsts();
                }
                app.UseCap();/////////////////
                app.UseHttpsRedirection();
                app.UseMvc();
            }
        }
    }

    贴几张效果图:

    在运行订阅端之前,订阅列表是0。运行订阅端后,就是1了。

    下面的Connections 有时候链接不上,不用担心,它自己会链接上的,我用的时候也是有时候连接不上(体验不好),但是只要程序运行着,他自己会自己链接的,他自己真会链接上的,反正我是这样的。

     

     

     

     Content:{"Id":"5e8d6a6e16ee345114c26cc8","Timestamp":"2020-04-08T14:08:46.3887716+08:00","Content":"lisi","CallbackName":null}

    第一种当运行程序,发布数据,把数据塞入到Published中,StatusName是Scheduled  这是没有将数据塞入到MQ中,可能是因为没有链接上。

    如果链接上了,就是会变成Succeed,将数据塞入MQ。

     {"Id":"5e8d6a6e16ee345114c26cc8","Timestamp":"2020-04-08T14:08:46.3887716+08:00","Content":"lisi","CallbackName":null}

  • 相关阅读:
    简单RPC框架-业务线程池
    简单RPC框架-基于Consul的服务注册与发现
    简易RPC框架-学习使用
    统一配置中心2
    dubbo+zipkin调用链监控
    Spring Cache扩展:注解失效时间+主动刷新缓存
    转:深入理解Java G1垃圾收集器
    dubbo源码分析(一)
    理解WEB API网关
    理解zookeeper选举机制
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/12659970.html
Copyright © 2011-2022 走看看