コード例 #1
0
        public void CreateBus(IServiceCollectionBusConfigurator busConfigurator, IStartupBusConfigurator configurator)
        {
            if (!configurator.HasSchedulerEndpoint)
            {
                busConfigurator.AddAmazonSqsMessageScheduler();
            }

            busConfigurator.UsingAmazonSqs((context, cfg) =>
            {
                var options = context.GetRequiredService <IOptions <AmazonSqsOptions> >().Value;
                if (string.IsNullOrWhiteSpace(options.Region))
                {
                    cfg.Host(new UriBuilder("amazonsqs://docker.localhost:4576")
                    {
                        Path = options.Scope
                    }.Uri, h =>
                    {
                        h.AccessKey("admin");
                        h.SecretKey("admin");
                        h.Config(new AmazonSimpleNotificationServiceConfig {
                            ServiceURL = "http://docker.localhost:4575"
                        });
                        h.Config(new AmazonSQSConfig {
                            ServiceURL = "http://docker.localhost:4576"
                        });
                    });
                }
                else
                {
                    cfg.Host(new UriBuilder("amazonsqs://host")
                    {
                        Host = options.Region,
                        Path = options.Scope
                    }.Uri, h =>
                    {
                        h.AccessKey(options.AccessKey);
                        h.SecretKey(options.SecretKey);
                    });
                }

                if (!configurator.TryConfigureQuartz(cfg))
                {
                    Log.Information("Configuring Amazon SQS Message Scheduler");
                    cfg.UseAmazonSqsMessageScheduler();
                }

                configurator.ConfigureBus(cfg, context);
            });
        }