/// <summary> /// Connects and subscribes to destinations on glassfish server through stompconnect instance /// </summary> public void Subscribe(DestinationCollection destinations, Action<List<STOMPMessage>, string> subscribeCallback) { _subscribeCallback = subscribeCallback; try { Parallel.For(0, destinations.Count, i => { StompConnectClient stompConnectClient = new StompConnectClient(destinations[i]); _stompClients.Add(stompConnectClient); ConnectAndSubscribe(stompConnectClient); }); } catch (Exception e) { TraceLogger.Log(e); throw; } }
private void DisposeClient(StompConnectClient client) { if (null == client) return; client.Dispose(); if (_stompClients.Contains(client)) _stompClients.Remove(client); }
private void ConnectAndSubscribe(StompConnectClient client) { client.Connect(); Subscribe(client); }
private void Subscribe(StompConnectClient client) { if (!_running) return; if (null == client) { TraceLogger.LogWarning(NonLocalizableResource.StompClientNullMessage); return; } SubscribeCallback subscriber = new SubscribeCallback(client.Subscribe); AsyncCallback callback = new AsyncCallback(GetMessages); IAsyncResult result = subscriber.BeginInvoke(callback, subscriber); }