Пример #1
0
        private async Task SendToPortalQueue(IMassTransitEvent evnt)
        {
            if (_portalSendEndPoint != null)
            {
                await _portalSendEndPoint.Send(evnt);
            }
            else
            {
                using (var context = Context.CreateScope())
                {
                    var bus = context.ServiceProvider.GetService <IBusControl>();
                    _portalSendEndPoint = await bus.GetSendEndpoint(_queuePortal);

                    await _portalSendEndPoint.Send(evnt);
                }
            }
        }
Пример #2
0
 private void PustToUIQueue(IMassTransitEvent @event, string queue)
 {
     using (var context = Context.CreateScope())
     {
         var busControl = context.ServiceProvider.GetService <IBusControl>();
         _sendEndPoint = busControl.GetSendEndpoint(new Uri(queue)).ConfigureAwait(false).GetAwaiter().GetResult();//ConfigureAwait(false) to Prevent Deadlock[https://msdn.microsoft.com/en-us/magazine/mt238404.aspx]
         if (_sendEndPoint != null)
         {
             foreach (var me in State.PendingResponses)
             {
                 _sendEndPoint.Send(me);
             }
             State.PendingResponses.Clear();
             _sendEndPoint.Send(@event);
         }
         else
         {
             State.PendingResponses.Add(@event);
         }
     }
 }