Exemple #1
0
        private CalcMessage readNextMessage(IMsgBusContext queue)
        {
            CalcMessage message      = null;
            int         retryCount   = Int32.Parse(ConfigurationManager.AppSettings["QueueGetMessageRetry"]);
            int         retryWaitSec = Int32.Parse(ConfigurationManager.AppSettings["QueueGetMessageRetryWaitSec"]);

            try
            {
                while (retryCount > 0 && message == null)
                {
                    MsgBusPayload payload = queue.GetNextMessage();
                    --retryCount;
                    if (payload != null)
                    {
                        message = JsonConvert.DeserializeObject <CalcMessage>(payload.Payload);
                    }
                    else
                    {
                        Console.WriteLine(String.Format("{1} No message - waiting: retries left {0}", retryCount, DateTime.UtcNow.ToShortTimeString()));
                        System.Threading.Thread.Sleep(retryWaitSec * 1000);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("{1} Exception while reading message: {0}", ex.Message, DateTime.UtcNow.ToShortTimeString()));
                message = null;
            }

            return(message);
        }
        private IMsgBusContext prepareMsgBusConext()
        {
            IMsgBusContext ctx = WebApiApplication.CompositionContainer.GetExportedValue <IMsgBusContext>(
                ConfigurationManager.AppSettings["MessageBus"]);

            IMsgBusContextParams ctxParams = ctx.PrepareParams();

            ctxParams.Parameters["StorageAccountName"] = ConfigurationManager.AppSettings["StorageAccountName"];
            ctxParams.Parameters["StorageAccountKey"]  = ConfigurationManager.AppSettings["StorageAccountKey"];
            ctxParams.Parameters["MessageQueue"]       = ConfigurationManager.AppSettings["MessageQueue"];

            ctx.Init(ctxParams);

            return(ctx);
        }
        private IMsgBusContext prepareMsgBusConext()
        {
            IMsgBusContext ctx = Startup.CompositionContainer.GetExportedValue <IMsgBusContext>(
                config["MessageBus"]);

            IMsgBusContextParams ctxParams = ctx.PrepareParams();

            ctxParams.Parameters["StorageAccountName"] = config["StorageAccountName"];
            ctxParams.Parameters["StorageAccountKey"]  = config["StorageAccountKey"];
            ctxParams.Parameters["MessageQueue"]       = config["MessageQueue"];

            ctx.Init(ctxParams);

            return(ctx);
        }
Exemple #4
0
        public void Start()
        {
            #region composition
            AggregateCatalog catalog          = new AggregateCatalog();
            DirectoryCatalog directoryCatalog = new DirectoryCatalog(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            catalog.Catalogs.Add(directoryCatalog);
            catalog.Catalogs.Add(new AssemblyCatalog(typeof(SampleHeavyCalc).Assembly));
            CompositionContainer = new CompositionContainer(catalog);

            CompositionContainer.ComposeParts(this);

            #endregion


            CloudStorageAccount account = createCloudStorageAccount();
            CloudBlobClient     client  = account.CreateCloudBlobClient();

            CloudBlobContainer container = getBlobContainer(client, ConfigurationManager.AppSettings["ContainerInput"]);

            CalcMessage message = null;

            IMsgBusContext msgBusContext = prepareMsgBusConext();

            do
            {
                message = readNextMessage(msgBusContext);
                if (message != null)
                {
                    string inputFileName = message.InputFileName;

                    List <decimal> inputs = getInput(container, inputFileName);

                    List <decimal> outputs = process(inputs);

                    writeOutput(container, inputFileName, outputs);
                }
            }while (message != null);
        }
 public HeavyCalcController()
 {
     ctxMsgBus = prepareMsgBusConext();
 }
 public HeavyCalcController(IConfiguration config, ILogger <EchoController> logger)
 {
     this.config = config;
     ctxMsgBus   = prepareMsgBusConext();
     this.logger = logger;
 }