internal RabbitMQTaskQueueListenerAdapterInstance(Func<IListenerAdapter> listenerAdapterFactory, Func<IRabbitMQQueueMonitor> queueMionitorFactory) { using (var proc = Process.GetCurrentProcess()) { if (proc.SessionId > 0) { _messagePublicationNotificationServiceUri = new Uri($"net.tcp://localhost:41781/RabbitMQTaskQueueListenerAdapter_{Guid.NewGuid():N}"); } } _queueMon = queueMionitorFactory(); _queueMon.MessagePublished += QueueMonitor_MessagePublished; _msgPubNotificationSvc = new MessagePublicationNotificationService(_queueMon); _msgPubNotificationSvcHost = new ServiceHost(_msgPubNotificationSvc, _messagePublicationNotificationServiceUri); _msgPubNotificationSvcHost.AddServiceEndpoint(typeof(IWasInteropService), BindingFactory.Create(_messagePublicationNotificationServiceUri), string.Empty); _msgPubNotificationSvcHost.Open(); TraceInformation($"Created callback queue on {_messagePublicationNotificationServiceUri}.", GetType()); _listenerAdapter = listenerAdapterFactory(); _listenerAdapter.ApplicationCreated += ListenerAdapter_ApplicationCreated; _listenerAdapter.ApplicationDeleted += ListenerAdapter_ApplicationDeleted; _listenerAdapter.ApplicationRequestBlockedStateChanged += ListenerAdapter_ApplicationRequestBlockedStateChanged; _listenerAdapter.ApplicationPoolCanOpenNewListenerChannelInstance += ListenerAdapter_ApplicationPoolCanOpenNewListenerChannelInstance; _listenerAdapter.ApplicationPoolListenerChannelInstancesStopped += ListenerAdapter_ApplicationPoolListenerChannelInstancesStopped; _listenerAdapter.ApplicationPoolStateChanged += ListenerAdapter_ApplicationPoolStateChanged; _listenerAdapter.ApplicationAppPoolChanged += ListenerAdapter_ApplicationAppPoolChanged; _listenerAdapter.ApplicationPoolCreated += ListenerAdapter_ApplicationPoolCreated; _listenerAdapter.ApplicationPoolDeleted += ListenerAdapter_ApplicationPoolDeleted; }
public Client(MessagePublicationNotificationService msgPubService, IWasInteropServiceCallback callback, string applicationPath, int listenerChannelId, Guid id) { CreationTime = DateTimeOffset.Now; _msgPubSvc = msgPubService; _callback = callback; ApplicationPath = applicationPath; ListenerChannelId = listenerChannelId; Id = id; }