private void btnCreateDocument_Click(object sender, EventArgs e) { var model = new CreateDocumentModel() { UserId = 1, DocumentType = DocumentType.Pdf }; // modelimi oluşturdum. Modelimi göndercem. Bunun için benim queue isimlerine ihtiyacım var. // create documentin altında writeQueue'yu çağırcaz WriteQueue(createDocument, model); // hangi queue ya göndercez? create dediğimiz için, create queue ya göndercez. frmSplash frmSplash = new frmSplash(); frmSplash.Show(); // bunu çıkarttıktan sonra, benim artık consumer işlemlerini toparlamam gerek. var consumerEvent = new EventingBasicConsumer(channel); // böyle bir eventim var. benden channel istiyor. bu eventin recieve isminde bir metodu var. bunun ilk parametesi channel ikincisi event argüment şeklinde. consumerEvent.Received += (ch, ea) => { // mesaj gelince önce modeli alalım var modelReceived = JsonConvert.DeserializeObject <CreateDocumentModel>(Encoding.UTF8.GetString(ea.Body.ToArray())); // recive data ya bu url i bastık AddLog($"Received Data Url: {modelReceived.Url}"); closeSplashScreen(frmSplash); }; // sonra channel a diyecez ki ben artık consume etmek isityorum. yani; channel.BasicConsume(documentCreated, true, consumerEvent); // o bana neyi consume edecen diyor. ben de ona document created ı consume edecem. cünkü consumer öteki taraftan yazacak bana. bana diyecek ki ben dökümanı oluşturdum. onu consume edecez diyorum. auotAck'ti true ve cunsoumer olarak da consumer eventimi parametre olarak gönderiyorum. }
// splash'i kapamak için; private void closeSplashScreen(frmSplash frmSplash) { if (frmSplash.InvokeRequired) {// ınvoke= metot çalışıyorsa frmSplash.Invoke(new Action(() => closeSplashScreen(frmSplash))); return; } frmSplash.Close(); }